--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit b1ee794316b686bdda29b9b5dbb118afa201be4d
Parents : 6fdda16
Author : Ivan <e46112d44649266d71fe2193e00a4710>
Signature : T66BB85Valid, signed by author
Date : 2026-07-22T14:14:32-05:00
feat: introduce half-duplex mode and push-to-talk functionality for LXST telephony, improve call statistics and API endpoints
Changes
20 files changed, 4682 insertions(+), 3913 deletions(-)
Diff
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e6fb188e..d3b846ef 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -31,6 +31,7 @@ All notable changes to this project will be documented in this file.
- Remote management allow-list for identities that may query this instance with rnstatus/rnpath
- Post-install prompts for existing users after upgrades
- Coolify-oriented Docker Compose with resource limits for deployments
+- LXST telephony half-duplex mode, live duplex switching, push-to-talk (packetizer squelch), and richer in-call stats (rates plus mute state on the active call)
### Changed
diff --git a/docs/agents/skills/lxst-telephony/SKILL.md b/docs/agents/skills/lxst-telephony/SKILL.md
index 88024227..3d49fa0f 100644
--- a/docs/agents/skills/lxst-telephony/SKILL.md
+++ b/docs/agents/skills/lxst-telephony/SKILL.md
@@ -28,11 +28,21 @@ LXST runs over Reticulum Links. Address callees by identity/destination hash. No
2. Do not block the whole UI on real-time ACK over constrained links. Show recoverable call states.
3. Auth-guard WS mutators that start or answer calls when password auth is enabled.
4. Keep audio paths identity-scoped. No shared in-memory call tables across identities.
+5. Prefer half duplex + PTT (LXST packetizer squelch) on scarce links instead of always full duplex.
## Verification
```bash
-uv run pytest tests/backend/test_lxst_telephony_adversarial.py -q --tb=short
+uv run pytest tests/backend/test_lxst_telephony_adversarial.py tests/backend/test_telephone_duplex_ptt.py -q --tb=short
```
Also: `reticulum-design-gates`, `auth-csrf-ws-security`, `identity-switch-teardown`.
+
+## LXST 0.5 duplex / PTT
+
+| Control | LXST API | MeshChatX surface |
+| ------------------ | ------------------------------------------ | ---------------------------------------------------- |
+| Full / half duplex | `Telephone.switch_mode`, `Profiles.MODE_*` | `POST /api/v1/telephone/switch-call-mode/{mode_id}` |
+| PTT (half duplex) | `squelch_transmit` / `unsquelch_transmit` | `POST /api/v1/telephone/ptt` with `{"active": bool}` |
+| Mute mic / speaker | `mute_transmit` / `mute_receive` | existing mute endpoints |
+| Live stats | RNS Link counters on `active_call` | `/api/v1/telephone/status` `tx_*` / `rx_*` / `*_bps` |
diff --git a/docs/en/audio-calls.md b/docs/en/audio-calls.md
index 1f0892a9..8032089c 100644
--- a/docs/en/audio-calls.md
+++ b/docs/en/audio-calls.md
@@ -15,10 +15,16 @@ From **Call** or a contact entry you can:
- **Dial** another identity by hash
- **Answer** or **decline** inbound rings
- **Hang up** an active session
-- **Mute** transmit or receive paths
+- **Mute** microphone (transmit) or speaker (receive)
+- Switch **full duplex** or **half duplex** during a live call
+- Use **push-to-talk** while in half duplex (hold the PTT control or Space)
+
+Half duplex uses LXST packetizer squelch so idle airtime stays low on constrained links. Full duplex keeps both directions open.
Call state changes arrive over the WebSocket (`telephone_ringing`, `telephone_call_established`, `telephone_call_ended`, and related events).
+While connected, the Call screen shows link stats (packets, bytes, approximate bitrates, path hops, and interface).
+
## Audio path
The frontend loads Codec2 assets for voice encoding (`Codec2Loader.js`). Browser and Electron builds use a Web Audio bridge at `/ws/telephone/audio`. Packaged desktop builds bundle the backend that negotiates LXST sessions.
diff --git a/meshchatx.rsm b/meshchatx.rsm
index a5b6df83..cbbd71b6 100644
Binary files a/meshchatx.rsm and b/meshchatx.rsm differ
diff --git a/meshchatx/meshchat.py b/meshchatx/meshchat.py
index be3a8ba9..5fcf07ca 100644
--- a/meshchatx/meshchat.py
+++ b/meshchatx/meshchat.py
@@ -10807,6 +10807,12 @@ class ReticulumMeshChat:
"profile",
)
else None,
+ "call_mode_id": self.telephone_manager.get_active_mode_id(),
+ "is_half_duplex": self.telephone_manager.is_half_duplex(),
+ "is_ptt_active": bool(self.telephone_manager.ptt_active),
+ "is_transmit_squelched": self.telephone_manager.is_transmit_squelched(),
+ "is_mic_muted": self.telephone_manager.transmit_muted,
+ "is_speaker_muted": self.telephone_manager.receive_muted,
"is_recording": self.telephone_manager.is_recording,
"is_voicemail": self.voicemail_manager.is_recording,
"call_start_time": self.telephone_manager.call_start_time,
@@ -10815,15 +10821,40 @@ class ReticulumMeshChat:
"rx_bytes": 0,
"tx_packets": 0,
"rx_packets": 0,
+ "tx_bps": 0,
+ "rx_bps": 0,
"path_hops": None,
"path_interface": None,
}
+ from LXST.Primitives.Telephony import Profiles
+
+ mode_id = active_call["call_mode_id"]
+ with contextlib.suppress(Exception):
+ active_call["call_mode_name"] = Profiles.mode_name(mode_id)
+ active_call["call_mode_abbrev"] = Profiles.mode_abbrevation(mode_id)
link = getattr(self.telephone_manager, "call_stats", {}).get("link")
if link:
active_call["tx_bytes"] = getattr(link, "txbytes", 0)
active_call["rx_bytes"] = getattr(link, "rxbytes", 0)
active_call["tx_packets"] = getattr(link, "tx", 0)
active_call["rx_packets"] = getattr(link, "rx", 0)
+ started_at = getattr(self.telephone_manager, "call_stats", {}).get(
+ "started_at",
+ )
+ if not started_at:
+ started_at = self.telephone_manager.call_start_time
+ elapsed = (
+ max(0.001, time.time() - float(started_at))
+ if started_at
+ else 0.0
+ )
+ if elapsed > 0:
+ active_call["tx_bps"] = int(
+ (active_call["tx_bytes"] * 8) / elapsed,
+ )
+ active_call["rx_bps"] = int(
+ (active_call["rx_bytes"] * 8) / elapsed,
+ )
# Best-effort direct link metadata fallback.
if active_call["path_hops"] is None:
for hop_attr in ["hops", "hop_count", "path_hops"]:
@@ -10890,6 +10921,9 @@ class ReticulumMeshChat:
"active_call": active_call,
"is_mic_muted": self.telephone_manager.transmit_muted,
"is_speaker_muted": self.telephone_manager.receive_muted,
+ "preferred_call_mode_id": self.telephone_manager.resolve_call_mode_id(
+ self.telephone_manager.preferred_mode_id,
+ ),
"missed_calls_unread_count": self.database.misc.get_unread_notification_count_by_type(
"telephone_missed_call",
),
@@ -11030,6 +11064,87 @@ class ReticulumMeshChat:
await asyncio.to_thread(self.telephone_manager.unmute_receive)
return web.json_response({"message": "Speaker unmuted"})
+ @routes.get("/api/v1/telephone/call-modes")
+ async def telephone_call_modes(request):
+ from LXST.Primitives.Telephony import Profiles
+
+ modes = [
+ {
+ "id": mode_id,
+ "name": Profiles.mode_name(mode_id),
+ "abbrev": Profiles.mode_abbrevation(mode_id),
+ "is_half_duplex": mode_id == Profiles.MODE_HALF_DUPLEX,
+ }
+ for mode_id in Profiles.available_modes()
+ ]
+ return web.json_response(
+ {
+ "default_call_mode_id": Profiles.DEFAULT_MODE,
+ "call_modes": modes,
+ },
+ )
+
+ @routes.post("/api/v1/telephone/switch-call-mode/{mode_id}")
+ async def telephone_switch_call_mode(request):
+ mode_id = request.match_info.get("mode_id")
+ try:
+ if self.telephone_manager.telephone is None:
+ return web.json_response(
+ {"message": "Telephone not initialized"},
+ status=400,
+ )
+ resolved = await asyncio.to_thread(
+ self.telephone_manager.apply_preferred_mode,
+ int(mode_id),
+ )
+ self.config.telephone_call_mode_id.set(resolved)
+ from LXST.Primitives.Telephony import Profiles
+
+ return web.json_response(
+ {
+ "message": f"Switched to mode {resolved}",
+ "mode_id": resolved,
+ "mode_name": Profiles.mode_name(resolved),
+ "is_half_duplex": resolved == Profiles.MODE_HALF_DUPLEX,
+ "is_ptt_active": bool(self.telephone_manager.ptt_active),
+ },
+ )
+ except Exception as e:
+ return web.json_response({"message": str(e)}, status=500)
+
+ @routes.post("/api/v1/telephone/ptt")
+ async def telephone_ptt(request):
+ if self.telephone_manager.telephone is None:
+ return web.json_response(
+ {"message": "Telephone not initialized"},
+ status=400,
+ )
+ try:
+ data = await request.json()
+ except Exception:
+ data = {}
+ active = (
+ bool(data.get("active", False)) if isinstance(data, dict) else False
+ )
+ ok = await asyncio.to_thread(self.telephone_manager.set_ptt_active, active)
+ if not ok and active:
+ return web.json_response(
+ {
+ "message": "PTT requires an established half-duplex call",
+ "is_ptt_active": bool(self.telephone_manager.ptt_active),
+ "is_half_duplex": self.telephone_manager.is_half_duplex(),
+ },
+ status=400,
+ )
+ return web.json_response(
+ {
+ "message": "ok",
+ "is_ptt_active": bool(self.telephone_manager.ptt_active),
+ "is_half_duplex": self.telephone_manager.is_half_duplex(),
+ "is_transmit_squelched": self.telephone_manager.is_transmit_squelched(),
+ },
+ )
+
# get call history
@routes.get("/api/v1/telephone/history")
async def telephone_history(request):
@@ -19688,6 +19803,17 @@ class ReticulumMeshChat:
profile_id,
)
+ if "telephone_call_mode_id" in data:
+ mode_id = self._coerce_int(data["telephone_call_mode_id"])
+ if mode_id is None:
+ mode_id = self.config.telephone_call_mode_id.get()
+ self.config.telephone_call_mode_id.set(mode_id)
+ if self.telephone_manager:
+ await asyncio.to_thread(
+ self.telephone_manager.apply_preferred_mode,
+ mode_id,
+ )
+
if "telephone_web_audio_enabled" in data:
self.config.telephone_web_audio_enabled.set(
self._parse_bool(data["telephone_web_audio_enabled"]),
@@ -21429,6 +21555,7 @@ class ReticulumMeshChat:
"telephone_allow_calls_from_contacts_only": ctx.config.telephone_allow_calls_from_contacts_only.get(),
"telephone_announce_enabled": ctx.config.telephone_announce_enabled.get(),
"telephone_audio_profile_id": ctx.config.telephone_audio_profile_id.get(),
+ "telephone_call_mode_id": ctx.config.telephone_call_mode_id.get(),
"telephone_web_audio_enabled": ctx.config.telephone_web_audio_enabled.get(),
"telephone_web_audio_allow_fallback": ctx.config.telephone_web_audio_allow_fallback.get(),
"call_recording_enabled": ctx.config.call_recording_enabled.get(),
diff --git a/meshchatx/src/backend/config_manager.py b/meshchatx/src/backend/config_manager.py
index ac4810e8..96012ec3 100644
--- a/meshchatx/src/backend/config_manager.py
+++ b/meshchatx/src/backend/config_manager.py
@@ -276,6 +276,11 @@ class ConfigManager:
"telephone_audio_profile_id",
64, # LXST Profiles.DEFAULT_PROFILE (Medium Quality / Opus)
)
+ self.telephone_call_mode_id = self.IntConfig(
+ self,
+ "telephone_call_mode_id",
+ 1, # LXST Profiles.MODE_FULL_DUPLEX
+ )
self.telephone_web_audio_enabled = self.BoolConfig(
self,
"telephone_web_audio_enabled",
diff --git a/meshchatx/src/backend/data/licenses_backend.json b/meshchatx/src/backend/data/licenses_backend.json
index 728e1f3d..f372a171 100644
--- a/meshchatx/src/backend/data/licenses_backend.json
+++ b/meshchatx/src/backend/data/licenses_backend.json
@@ -1,194 +1,194 @@
[
- {
- "name": "aiohappyeyeballs",
- "version": "2.6.1",
- "author": "J. Nick Koston",
- "license": "PSF-2.0"
- },
- {
- "name": "aiohttp",
- "version": "3.14.1",
- "author": "—",
- "license": "Apache-2.0 AND MIT"
- },
- {
- "name": "aiohttp-session",
- "version": "2.12.1",
- "author": "Andrew Svetlov",
- "license": "Apache 2"
- },
- {
- "name": "aiosignal",
- "version": "1.4.0",
- "author": "aiohttp team <team@aiohttp.org>",
- "license": "Apache 2.0"
- },
- {
- "name": "attrs",
- "version": "26.1.0",
- "author": "Hynek Schlawack <hs@ox.cx>",
- "license": "MIT"
- },
- {
- "name": "audioop-lts",
- "version": "0.2.2",
- "author": "—",
- "license": "PSF-2.0"
- },
- {
- "name": "bcrypt",
- "version": "5.0.0",
- "author": "The Python Cryptographic Authority developers <cryptography-dev@python.org>",
- "license": "Apache-2.0"
- },
- {
- "name": "bleak",
- "version": "3.0.2",
- "author": "Henrik Blidh",
- "license": "MIT"
- },
- {
- "name": "cbor2",
- "version": "6.1.1",
- "author": "Alex Grönholm <alex.gronholm@nextday.fi>",
- "license": "MIT"
- },
- {
- "name": "cffi",
- "version": "2.0.0",
- "author": "Armin Rigo, Maciej Fijalkowski",
- "license": "MIT"
- },
- {
- "name": "cryptography",
- "version": "49.0.0",
- "author": "The Python Cryptographic Authority and individual contributors <cryptography-dev@python.org>",
- "license": "Apache-2.0 OR BSD-3-Clause"
- },
- {
- "name": "dbus-fast",
- "version": "5.0.22",
- "author": "Bluetooth Devices Authors",
- "license": "MIT"
- },
- {
- "name": "frozenlist",
- "version": "1.8.0",
- "author": "aiohttp team <team@aiohttp.org>",
- "license": "Apache-2.0"
- },
- {
- "name": "idna",
- "version": "3.18",
- "author": "Kim Davies <kim+pypi@gumleaf.org>",
- "license": "BSD-3-Clause"
- },
- {
- "name": "lxmf",
- "version": "1.1.0",
- "author": "Mark Qvist",
- "license": "Reticulum License"
- },
- {
- "name": "lxmfy",
- "version": "2.0.1",
- "author": "Quad4 <team@quad4.io>",
- "license": "BSD-0-Clause"
- },
- {
- "name": "lxst",
- "version": "0.5.0",
- "author": "Mark Qvist",
- "license": "Other/Proprietary License"
- },
- {
- "name": "miniaudio",
- "version": "1.71",
- "author": "Irmen de Jong <irmen@razorvine.net>",
- "license": "MIT"
- },
- {
- "name": "multidict",
- "version": "6.7.1",
- "author": "Andrew Svetlov",
- "license": "Apache License 2.0"
- },
- {
- "name": "numpy",
- "version": "2.4.6",
- "author": "Travis E. Oliphant et al.",
- "license": "BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0"
- },
- {
- "name": "ply",
- "version": "3.11",
- "author": "David Beazley",
- "license": "BSD"
- },
- {
- "name": "propcache",
- "version": "0.4.1",
- "author": "Andrew Svetlov",
- "license": "Apache-2.0"
- },
- {
- "name": "psutil",
- "version": "7.2.2",
- "author": "Giampaolo Rodola",
- "license": "BSD-3-Clause"
- },
- {
- "name": "pycodec2",
- "version": "4.1.1",
- "author": "Grzegorz Milka",
- "license": "OSI Approved :: BSD License"
- },
- {
- "name": "pycparser",
- "version": "3.0",
- "author": "Eli Bendersky <eliben@gmail.com>",
- "license": "BSD-3-Clause"
- },
- {
- "name": "pyserial",
- "version": "3.5",
- "author": "Chris Liechti",
- "license": "BSD"
- },
- {
- "name": "reticulum-meshchatx",
- "version": "4.8.0",
- "author": "Quad4",
- "license": "0BSD AND MIT"
- },
- {
- "name": "rns",
- "version": "1.4.0",
- "author": "Mark Qvist",
- "license": "Reticulum License"
- },
- {
- "name": "rns-filesync",
- "version": "1.0.0",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "wasmtime",
- "version": "46.0.1",
- "author": "The Wasmtime Project Developers <hello@bytecodealliance.org>",
- "license": "Apache-2.0 WITH LLVM-exception"
- },
- {
- "name": "websockets",
- "version": "16.0",
- "author": "Aymeric Augustin <aymeric.augustin@m4x.org>",
- "license": "BSD-3-Clause"
- },
- {
- "name": "yarl",
- "version": "1.23.0",
- "author": "Andrew Svetlov",
- "license": "Apache-2.0"
- }
+ {
+ "name": "aiohappyeyeballs",
+ "version": "2.6.1",
+ "author": "J. Nick Koston",
+ "license": "PSF-2.0"
+ },
+ {
+ "name": "aiohttp",
+ "version": "3.14.1",
+ "author": "—",
+ "license": "Apache-2.0 AND MIT"
+ },
+ {
+ "name": "aiohttp-session",
+ "version": "2.12.1",
+ "author": "Andrew Svetlov",
+ "license": "Apache 2"
+ },
+ {
+ "name": "aiosignal",
+ "version": "1.4.0",
+ "author": "aiohttp team <team@aiohttp.org>",
+ "license": "Apache 2.0"
+ },
+ {
+ "name": "attrs",
+ "version": "26.1.0",
+ "author": "Hynek Schlawack <hs@ox.cx>",
+ "license": "MIT"
+ },
+ {
+ "name": "audioop-lts",
+ "version": "0.2.2",
+ "author": "—",
+ "license": "PSF-2.0"
+ },
+ {
+ "name": "bcrypt",
+ "version": "5.0.0",
+ "author": "The Python Cryptographic Authority developers <cryptography-dev@python.org>",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "bleak",
+ "version": "3.0.2",
+ "author": "Henrik Blidh",
+ "license": "MIT"
+ },
+ {
+ "name": "cbor2",
+ "version": "6.1.1",
+ "author": "Alex Grönholm <alex.gronholm@nextday.fi>",
+ "license": "MIT"
+ },
+ {
+ "name": "cffi",
+ "version": "2.0.0",
+ "author": "Armin Rigo, Maciej Fijalkowski",
+ "license": "MIT"
+ },
+ {
+ "name": "cryptography",
+ "version": "49.0.0",
+ "author": "The Python Cryptographic Authority and individual contributors <cryptography-dev@python.org>",
+ "license": "Apache-2.0 OR BSD-3-Clause"
+ },
+ {
+ "name": "dbus-fast",
+ "version": "5.0.22",
+ "author": "Bluetooth Devices Authors",
+ "license": "MIT"
+ },
+ {
+ "name": "frozenlist",
+ "version": "1.8.0",
+ "author": "aiohttp team <team@aiohttp.org>",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "idna",
+ "version": "3.18",
+ "author": "Kim Davies <kim+pypi@gumleaf.org>",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "lxmf",
+ "version": "1.1.0",
+ "author": "Mark Qvist",
+ "license": "Reticulum License"
+ },
+ {
+ "name": "lxmfy",
+ "version": "2.0.1",
+ "author": "Quad4 <team@quad4.io>",
+ "license": "BSD-0-Clause"
+ },
+ {
+ "name": "lxst",
+ "version": "0.5.0",
+ "author": "Mark Qvist",
+ "license": "Other/Proprietary License"
+ },
+ {
+ "name": "miniaudio",
+ "version": "1.71",
+ "author": "Irmen de Jong <irmen@razorvine.net>",
+ "license": "MIT"
+ },
+ {
+ "name": "multidict",
+ "version": "6.7.1",
+ "author": "Andrew Svetlov",
+ "license": "Apache License 2.0"
+ },
+ {
+ "name": "numpy",
+ "version": "2.4.6",
+ "author": "Travis E. Oliphant et al.",
+ "license": "BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0"
+ },
+ {
+ "name": "ply",
+ "version": "3.11",
+ "author": "David Beazley",
+ "license": "BSD"
+ },
+ {
+ "name": "propcache",
+ "version": "0.4.1",
+ "author": "Andrew Svetlov",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "psutil",
+ "version": "7.2.2",
+ "author": "Giampaolo Rodola",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "pycodec2",
+ "version": "4.1.1",
+ "author": "Grzegorz Milka",
+ "license": "OSI Approved :: BSD License"
+ },
+ {
+ "name": "pycparser",
+ "version": "3.0",
+ "author": "Eli Bendersky <eliben@gmail.com>",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "pyserial",
+ "version": "3.5",
+ "author": "Chris Liechti",
+ "license": "BSD"
+ },
+ {
+ "name": "reticulum-meshchatx",
+ "version": "4.8.0",
+ "author": "Quad4",
+ "license": "0BSD AND MIT"
+ },
+ {
+ "name": "rns",
+ "version": "1.4.0",
+ "author": "Mark Qvist",
+ "license": "Reticulum License"
+ },
+ {
+ "name": "rns-filesync",
+ "version": "1.0.0",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "wasmtime",
+ "version": "46.0.1",
+ "author": "The Wasmtime Project Developers <hello@bytecodealliance.org>",
+ "license": "Apache-2.0 WITH LLVM-exception"
+ },
+ {
+ "name": "websockets",
+ "version": "16.0",
+ "author": "Aymeric Augustin <aymeric.augustin@m4x.org>",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "yarl",
+ "version": "1.23.0",
+ "author": "Andrew Svetlov",
+ "license": "Apache-2.0"
+ }
]
diff --git a/meshchatx/src/backend/data/licenses_frontend.json b/meshchatx/src/backend/data/licenses_frontend.json
index 26d2cc83..6f40a641 100644
--- a/meshchatx/src/backend/data/licenses_frontend.json
+++ b/meshchatx/src/backend/data/licenses_frontend.json
@@ -1,3698 +1,3698 @@
[
- {
- "name": "@asamuzakjp/css-color",
- "version": "5.1.11",
- "author": "asamuzaK",
- "license": "MIT"
- },
- {
- "name": "@asamuzakjp/dom-selector",
- "version": "7.1.1",
- "author": "asamuzaK",
- "license": "MIT"
- },
- {
- "name": "@asamuzakjp/generational-cache",
- "version": "1.0.1",
- "author": "asamuzaK",
- "license": "MIT"
- },
- {
- "name": "@asamuzakjp/nwsapi",
- "version": "2.3.9",
- "author": "Diego Perini",
- "license": "MIT"
- },
- {
- "name": "@babel/helper-string-parser",
- "version": "7.27.1",
- "author": "The Babel Team",
- "license": "MIT"
- },
- {
- "name": "@babel/helper-validator-identifier",
- "version": "7.28.5",
- "author": "The Babel Team",
- "license": "MIT"
- },
- {
- "name": "@babel/parser",
- "version": "7.29.0",
- "author": "The Babel Team",
- "license": "MIT"
- },
- {
- "name": "@babel/types",
- "version": "7.29.0",
- "author": "The Babel Team",
- "license": "MIT"
- },
- {
- "name": "@bcoe/v8-coverage",
- "version": "1.0.2",
- "author": "Charles Samborski",
- "license": "MIT"
- },
- {
- "name": "@bramus/specificity",
- "version": "2.4.2",
- "author": "Bramus Van Damme",
- "license": "MIT"
- },
- {
- "name": "@csstools/color-helpers",
- "version": "6.0.2",
- "author": "—",
- "license": "MIT-0"
- },
- {
- "name": "@csstools/css-calc",
- "version": "3.2.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@csstools/css-color-parser",
- "version": "4.1.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@csstools/css-parser-algorithms",
- "version": "4.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@csstools/css-syntax-patches-for-csstree",
- "version": "1.1.3",
- "author": "—",
- "license": "MIT-0"
- },
- {
- "name": "@csstools/css-tokenizer",
- "version": "4.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@egjs/hammerjs",
- "version": "2.0.17",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@electron-internal/extract-zip",
- "version": "1.0.1",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "@electron/asar",
- "version": "3.4.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@electron/fuses",
- "version": "1.8.0",
- "author": "Electron Community",
- "license": "MIT"
- },
- {
- "name": "@electron/get",
- "version": "3.1.0",
- "author": "Samuel Attard",
- "license": "MIT"
- },
- {
- "name": "@electron/notarize",
- "version": "2.5.0",
- "author": "Samuel Attard",
- "license": "MIT"
- },
- {
- "name": "@electron/osx-sign",
- "version": "1.3.3",
- "author": "electron",
- "license": "BSD-2-Clause"
- },
- {
- "name": "@electron/rebuild",
- "version": "4.0.4",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@electron/universal",
- "version": "2.0.3",
- "author": "Samuel Attard",
- "license": "MIT"
- },
- {
- "name": "@electron/windows-sign",
- "version": "1.1.2",
- "author": "Felix Rieseberg",
- "license": "BSD-2-Clause"
- },
- {
- "name": "@epic-web/invariant",
- "version": "1.0.0",
- "author": "Kent C. Dodds",
- "license": "MIT"
- },
- {
- "name": "@eslint-community/eslint-utils",
- "version": "4.8.0",
- "author": "Toru Nagashima",
- "license": "MIT"
- },
- {
- "name": "@eslint-community/regexpp",
- "version": "4.12.2",
- "author": "Toru Nagashima",
- "license": "MIT"
- },
- {
- "name": "@eslint/config-array",
- "version": "0.21.2",
- "author": "Nicholas C. Zakas",
- "license": "Apache-2.0"
- },
- {
- "name": "@eslint/config-helpers",
- "version": "0.4.2",
- "author": "—",
- "license": "Apache-2.0"
- },
- {
- "name": "@eslint/core",
- "version": "0.17.0",
- "author": "Nicholas C. Zakas",
- "license": "Apache-2.0"
- },
- {
- "name": "@eslint/eslintrc",
- "version": "3.3.6",
- "author": "Nicholas C. Zakas",
- "license": "MIT"
- },
- {
- "name": "@eslint/js",
- "version": "9.39.5",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@eslint/object-schema",
- "version": "2.1.7",
- "author": "Nicholas C. Zakas",
- "license": "Apache-2.0"
- },
- {
- "name": "@eslint/plugin-kit",
- "version": "0.4.1",
- "author": "Nicholas C. Zakas",
- "license": "Apache-2.0"
- },
- {
- "name": "@exodus/bytes",
- "version": "1.15.0",
- "author": "Exodus Movement, Inc.",
- "license": "MIT"
- },
- {
- "name": "@fontsource/noto-sans",
- "version": "5.3.0",
- "author": "Google Inc.",
- "license": "OFL-1.1"
- },
- {
- "name": "@gar/promise-retry",
- "version": "1.0.3",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@humanfs/core",
- "version": "0.19.2",
- "author": "Nicholas C. Zakas",
- "license": "Apache-2.0"
- },
- {
- "name": "@humanfs/node",
- "version": "0.16.8",
- "author": "Nicholas C. Zakas",
- "license": "Apache-2.0"
- },
- {
- "name": "@humanfs/types",
- "version": "0.15.0",
- "author": "Nicholas C. Zakas",
- "license": "Apache-2.0"
- },
- {
- "name": "@humanwhocodes/module-importer",
- "version": "1.0.1",
- "author": "Nicholas C. Zaks",
- "license": "Apache-2.0"
- },
- {
- "name": "@humanwhocodes/retry",
- "version": "0.4.3",
- "author": "Nicholas C. Zaks",
- "license": "Apache-2.0"
- },
- {
- "name": "@intlify/core-base",
- "version": "11.4.7",
- "author": "kazuya kawaguchi",
- "license": "MIT"
- },
- {
- "name": "@intlify/devtools-types",
- "version": "11.4.7",
- "author": "kazuya kawaguchi",
- "license": "MIT"
- },
- {
- "name": "@intlify/message-compiler",
- "version": "11.4.7",
- "author": "kazuya kawaguchi",
- "license": "MIT"
- },
- {
- "name": "@intlify/shared",
- "version": "11.4.7",
- "author": "kazuya kawaguchi",
- "license": "MIT"
- },
- {
- "name": "@isaacs/cliui",
- "version": "8.0.2",
- "author": "Ben Coe",
- "license": "ISC"
- },
- {
- "name": "@isaacs/fs-minipass",
- "version": "4.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "@jridgewell/gen-mapping",
- "version": "0.3.0",
- "author": "Justin Ridgewell",
- "license": "MIT"
- },
- {
- "name": "@jridgewell/remapping",
- "version": "2.3.5",
- "author": "Justin Ridgewell",
- "license": "MIT"
- },
- {
- "name": "@jridgewell/resolve-uri",
- "version": "3.0.3",
- "author": "Justin Ridgewell",
- "license": "MIT"
- },
- {
- "name": "@jridgewell/set-array",
- "version": "1.2.1",
- "author": "Justin Ridgewell",
- "license": "MIT"
- },
- {
- "name": "@jridgewell/source-map",
- "version": "0.3.3",
- "author": "Justin Ridgewell",
- "license": "MIT"
- },
- {
- "name": "@jridgewell/sourcemap-codec",
- "version": "1.4.10",
- "author": "Justin Ridgewell",
- "license": "MIT"
- },
- {
- "name": "@jridgewell/trace-mapping",
- "version": "0.3.9",
- "author": "Justin Ridgewell",
- "license": "MIT"
- },
- {
- "name": "@malept/cross-spawn-promise",
- "version": "2.0.0",
- "author": "Mark Lee",
- "license": "Apache-2.0"
- },
- {
- "name": "@malept/flatpak-bundler",
- "version": "0.4.0",
- "author": "Matt Watson",
- "license": "MIT"
- },
- {
- "name": "@mapbox/jsonlint-lines-primitives",
- "version": "2.0.2",
- "author": "Zach Carter",
- "license": "Unknown"
- },
- {
- "name": "@mapbox/unitbezier",
- "version": "0.0.1",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "@maplibre/maplibre-gl-style-spec",
- "version": "24.4.1",
- "author": "MapLibre",
- "license": "ISC"
- },
- {
- "name": "@mdi/font",
- "version": "7.4.47",
- "author": "Austin Andrews",
- "license": "Apache-2.0"
- },
- {
- "name": "@mdi/js",
- "version": "7.4.47",
- "author": "Austin Andrews",
- "license": "Apache-2.0"
- },
- {
- "name": "@noble/hashes",
- "version": "1.4.0",
- "author": "Paul Miller",
- "license": "MIT"
- },
- {
- "name": "@npmcli/agent",
- "version": "4.0.2",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "@npmcli/fs",
- "version": "5.0.0",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "@npmcli/redact",
- "version": "4.0.0",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "@one-ini/wasm",
- "version": "0.1.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@oxc-parser/binding-linux-x64-gnu",
- "version": "0.140.0",
- "author": "Boshen and oxc contributors",
- "license": "MIT"
- },
- {
- "name": "@oxc-project/types",
- "version": "0.139.0",
- "author": "Boshen and oxc contributors",
- "license": "MIT"
- },
- {
- "name": "@oxc-resolver/binding-linux-x64-gnu",
- "version": "11.24.2",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@peculiar/asn1-schema",
- "version": "2.7.0",
- "author": "PeculiarVentures, LLC",
- "license": "MIT"
- },
- {
- "name": "@peculiar/json-schema",
- "version": "1.1.12",
- "author": "PeculiarVentures, Inc",
- "license": "MIT"
- },
- {
- "name": "@peculiar/utils",
- "version": "2.0.3",
- "author": "PeculiarVentures",
- "license": "MIT"
- },
- {
- "name": "@peculiar/webcrypto",
- "version": "1.7.1",
- "author": "PeculiarVentures",
- "license": "MIT"
- },
- {
- "name": "@petamoriken/float16",
- "version": "3.9.3",
- "author": "Kenta Moriuchi",
- "license": "MIT"
- },
- {
- "name": "@pkgjs/parseargs",
- "version": "0.11.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@pkgr/core",
- "version": "0.3.6",
- "author": "JounQin",
- "license": "MIT"
- },
- {
- "name": "@playwright/test",
- "version": "1.61.1",
- "author": "Microsoft Corporation",
- "license": "Apache-2.0"
- },
- {
- "name": "@polka/url",
- "version": "1.0.0-next.24",
- "author": "Luke Edwards",
- "license": "MIT"
- },
- {
- "name": "@rolldown/binding-linux-x64-gnu",
- "version": "1.1.5",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@rolldown/pluginutils",
- "version": "1.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@sindresorhus/is",
- "version": "4.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "@standard-schema/spec",
- "version": "1.1.0",
- "author": "Colin McDonnell",
- "license": "MIT"
- },
- {
- "name": "@szmarczak/http-timer",
- "version": "4.0.5",
- "author": "Szymon Marczak",
- "license": "MIT"
- },
- {
- "name": "@tailwindcss/forms",
- "version": "0.5.11",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@tailwindcss/node",
- "version": "4.3.3",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@tailwindcss/oxide",
- "version": "4.3.3",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@tailwindcss/oxide-linux-x64-gnu",
- "version": "4.3.3",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@tailwindcss/vite",
- "version": "4.3.3",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@tanstack/virtual-core",
- "version": "3.17.6",
- "author": "Tanner Linsley",
- "license": "MIT"
- },
- {
- "name": "@tanstack/vue-virtual",
- "version": "3.13.34",
- "author": "Tanner Linsley",
- "license": "MIT"
- },
- {
- "name": "@types/cacheable-request",
- "version": "6.0.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/chai",
- "version": "5.2.3",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/debug",
- "version": "4.1.6",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/deep-eql",
- "version": "4.0.2",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/estree",
- "version": "1.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/fs-extra",
- "version": "9.0.13",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/hammerjs",
- "version": "2.0.46",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/http-cache-semantics",
- "version": "4.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/json-schema",
- "version": "7.0.15",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/keyv",
- "version": "3.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/node",
- "version": "0.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/rbush",
- "version": "4.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/responselike",
- "version": "1.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@types/trusted-types",
- "version": "2.0.7",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vitejs/plugin-vue",
- "version": "6.0.8",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vitest/coverage-v8",
- "version": "4.1.10",
- "author": "Anthony Fu",
- "license": "MIT"
- },
- {
- "name": "@vitest/expect",
- "version": "4.1.10",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vitest/mocker",
- "version": "4.1.10",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vitest/pretty-format",
- "version": "4.1.10",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vitest/runner",
- "version": "4.1.10",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vitest/snapshot",
- "version": "4.1.10",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vitest/spy",
- "version": "4.1.10",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vitest/ui",
- "version": "4.1.10",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vitest/utils",
- "version": "4.1.10",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@volar/language-core",
- "version": "2.4.28",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@volar/source-map",
- "version": "2.4.28",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@volar/typescript",
- "version": "2.4.28",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vue/compiler-core",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/compiler-dom",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/compiler-sfc",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/compiler-ssr",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/devtools-api",
- "version": "6.5.0",
- "author": "Guillaume Chau",
- "license": "MIT"
- },
- {
- "name": "@vue/language-core",
- "version": "3.3.7",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "@vue/reactivity",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/runtime-core",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/runtime-dom",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/server-renderer",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/shared",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "@vue/test-utils",
- "version": "2.4.11",
- "author": "Lachlan Miller",
- "license": "MIT"
- },
- {
- "name": "@vuetify/loader-shared",
- "version": "2.1.2",
- "author": "Kael Watts-Deuchar",
- "license": "MIT"
- },
- {
- "name": "@zarrita/storage",
- "version": "0.2.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "abbrev",
- "version": "4.0.0",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "abbrev",
- "version": "1.0.3",
- "author": "Isaac Z. Schlueter",
- "license": "Unknown"
- },
- {
- "name": "acorn",
- "version": "0.11.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "acorn-jsx",
- "version": "5.3.2",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "agent-base",
- "version": "7.0.2",
- "author": "Nathan Rajlich",
- "license": "MIT"
- },
- {
- "name": "ajv",
- "version": "6.14.0",
- "author": "Evgeny Poberezkin",
- "license": "MIT"
- },
- {
- "name": "alien-signals",
- "version": "3.2.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "amdefine",
- "version": "1.0.1",
- "author": "James Burke",
- "license": "BSD-3-Clause OR MIT"
- },
- {
- "name": "ansi-regex",
- "version": "5.0.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "ansi-styles",
- "version": "4.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "app-builder-lib",
- "version": "26.15.3",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "argparse",
- "version": "2.0.1",
- "author": "—",
- "license": "Python-2.0"
- },
- {
- "name": "asn1js",
- "version": "3.0.10",
- "author": "Yury Strozhevsky",
- "license": "BSD-3-Clause"
- },
- {
- "name": "assertion-error",
- "version": "2.0.1",
- "author": "Jake Luer",
- "license": "MIT"
- },
- {
- "name": "ast-types",
- "version": "0.6.12",
- "author": "Ben Newman",
- "license": "MIT"
- },
- {
- "name": "ast-v8-to-istanbul",
- "version": "1.0.0",
- "author": "Ari Perkkiö",
- "license": "MIT"
- },
- {
- "name": "async",
- "version": "3.2.3",
- "author": "Caolan McMahon",
- "license": "MIT"
- },
- {
- "name": "async-exit-hook",
- "version": "2.0.1",
- "author": "Tapani Moilanen",
- "license": "MIT"
- },
- {
- "name": "asynckit",
- "version": "0.4.0",
- "author": "Alex Indigo",
- "license": "MIT"
- },
- {
- "name": "at-least-node",
- "version": "1.0.0",
- "author": "Ryan Zimmerman",
- "license": "ISC"
- },
- {
- "name": "aws4",
- "version": "1.13.2",
- "author": "Michael Hart",
- "license": "MIT"
- },
- {
- "name": "balanced-match",
- "version": "1.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "base64-js",
- "version": "1.5.1",
- "author": "T. Jameson Little",
- "license": "MIT"
- },
- {
- "name": "bidi-js",
- "version": "1.0.3",
- "author": "Jason Johnston",
- "license": "MIT"
- },
- {
- "name": "bluebird",
- "version": "3.7.2",
- "author": "Petka Antonov",
- "license": "MIT"
- },
- {
- "name": "blueimp-canvas-to-blob",
- "version": "3.29.0",
- "author": "Sebastian Tschan",
- "license": "MIT"
- },
- {
- "name": "boolbase",
- "version": "1.0.0",
- "author": "Felix Boehm",
- "license": "ISC"
- },
- {
- "name": "boolean",
- "version": "3.0.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "brace-expansion",
- "version": "1.1.12",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "buffer-from",
- "version": "1.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "builder-util",
- "version": "26.15.3",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "builder-util-runtime",
- "version": "9.7.0",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "bytestreamjs",
- "version": "2.0.1",
- "author": "Yury Strozhevsky",
- "license": "BSD-3-Clause"
- },
- {
- "name": "cacache",
- "version": "20.0.4",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "cacheable-lookup",
- "version": "5.0.3",
- "author": "Szymon Marczak",
- "license": "MIT"
- },
- {
- "name": "cacheable-request",
- "version": "7.0.2",
- "author": "Luke Childs",
- "license": "MIT"
- },
- {
- "name": "call-bind-apply-helpers",
- "version": "1.0.1",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "callsites",
- "version": "3.1.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "chai",
- "version": "6.2.2",
- "author": "Jake Luer",
- "license": "MIT"
- },
- {
- "name": "chalk",
- "version": "4.1.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "chownr",
- "version": "3.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "chromium-pickle-js",
- "version": "0.2.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "ci-info",
- "version": "4.2.0",
- "author": "Thomas Watson Steen",
- "license": "MIT"
- },
- {
- "name": "cli-table3",
- "version": "0.5.0",
- "author": "James Talmage",
- "license": "MIT"
- },
- {
- "name": "cliui",
- "version": "4.0.0",
- "author": "Ben Coe",
- "license": "ISC"
- },
- {
- "name": "clone-response",
- "version": "1.0.2",
- "author": "Luke Childs",
- "license": "MIT"
- },
- {
- "name": "code-point-at",
- "version": "1.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "color-convert",
- "version": "2.0.0",
- "author": "Heather Arthur",
- "license": "MIT"
- },
- {
- "name": "color-name",
- "version": "1.1.4",
- "author": "DY",
- "license": "MIT"
- },
- {
- "name": "colors",
- "version": "1.1.2",
- "author": "Marak Squires",
- "license": "MIT"
- },
- {
- "name": "combined-stream",
- "version": "1.0.8",
- "author": "Felix Geisendörfer",
- "license": "MIT"
- },
- {
- "name": "commander",
- "version": "2.20.0",
- "author": "TJ Holowaychuk",
- "license": "MIT"
- },
- {
- "name": "compare-version",
- "version": "0.1.2",
- "author": "Kevin Mårtensson",
- "license": "MIT"
- },
- {
- "name": "component-emitter",
- "version": "2.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "compressorjs",
- "version": "1.3.0",
- "author": "Chen Fengyuan",
- "license": "MIT"
- },
- {
- "name": "concat-map",
- "version": "0.0.1",
- "author": "James Halliday",
- "license": "MIT"
- },
- {
- "name": "config-chain",
- "version": "1.1.13",
- "author": "Dominic Tarr",
- "license": "MIT"
- },
- {
- "name": "convert-source-map",
- "version": "2.0.0",
- "author": "Thorsten Lorenz",
- "license": "MIT"
- },
- {
- "name": "core-util-is",
- "version": "1.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "MIT"
- },
- {
- "name": "cross-dirname",
- "version": "0.1.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "cross-env",
- "version": "10.1.0",
- "author": "Kent C. Dodds",
- "license": "MIT"
- },
- {
- "name": "cross-spawn",
- "version": "7.0.5",
- "author": "André Cruz",
- "license": "MIT"
- },
- {
- "name": "css-tree",
- "version": "3.2.1",
- "author": "Roman Dvornov",
- "license": "MIT"
- },
- {
- "name": "cssesc",
- "version": "3.0.0",
- "author": "Mathias Bynens",
- "license": "MIT"
- },
- {
- "name": "csstype",
- "version": "3.2.3",
- "author": "Fredrik Nicol",
- "license": "MIT"
- },
- {
- "name": "data-urls",
- "version": "7.0.0",
- "author": "Domenic Denicola",
- "license": "MIT"
- },
- {
- "name": "dayjs",
- "version": "1.11.21",
- "author": "iamkun",
- "license": "MIT"
- },
- {
- "name": "debug",
- "version": "4.3.1",
- "author": "Josh Junon",
- "license": "MIT"
- },
- {
- "name": "decamelize",
- "version": "1.2.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "decimal.js",
- "version": "10.6.0",
- "author": "Michael Mclaughlin",
- "license": "MIT"
- },
- {
- "name": "decompress-response",
- "version": "6.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "deep-is",
- "version": "0.1.4",
- "author": "Thorsten Lorenz",
- "license": "MIT"
- },
- {
- "name": "defer-to-connect",
- "version": "2.0.0",
- "author": "Szymon Marczak",
- "license": "MIT"
- },
- {
- "name": "define-properties",
- "version": "1.1.2",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "delayed-stream",
- "version": "1.0.0",
- "author": "Felix Geisendörfer",
- "license": "MIT"
- },
- {
- "name": "detect-libc",
- "version": "2.0.3",
- "author": "Lovell Fuller",
- "license": "Apache-2.0"
- },
- {
- "name": "detect-node",
- "version": "2.0.4",
- "author": "Ilya Kantor",
- "license": "ISC"
- },
- {
- "name": "dijkstrajs",
- "version": "1.0.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "dir-compare",
- "version": "4.2.0",
- "author": "Liviu Grigorescu",
- "license": "MIT"
- },
- {
- "name": "dmg-builder",
- "version": "26.15.3",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "dompurify",
- "version": "3.4.12",
- "author": "Dr.-Ing. Mario Heiderich, Cure53",
- "license": "(MPL-2.0 OR Apache-2.0)"
- },
- {
- "name": "dotenv",
- "version": "16.6.1",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "dotenv-expand",
- "version": "11.0.6",
- "author": "motdotla",
- "license": "BSD-2-Clause"
- },
- {
- "name": "dunder-proto",
- "version": "1.0.0",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "duplexer2",
- "version": "0.1.4",
- "author": "Conrad Pankoff",
- "license": "BSD-3-Clause"
- },
- {
- "name": "earcut",
- "version": "3.0.0",
- "author": "Vladimir Agafonkin",
- "license": "ISC"
- },
- {
- "name": "eastasianwidth",
- "version": "0.2.0",
- "author": "Masaki Komagata",
- "license": "MIT"
- },
- {
- "name": "editorconfig",
- "version": "1.0.3",
- "author": "EditorConfig Team",
- "license": "MIT"
- },
- {
- "name": "ejs",
- "version": "3.1.10",
- "author": "Matthew Eernisse",
- "license": "Apache-2.0"
- },
- {
- "name": "electron",
- "version": "42.4.0",
- "author": "Electron Community",
- "license": "MIT"
- },
- {
- "name": "electron-builder",
- "version": "26.15.3",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "electron-builder-squirrel-windows",
- "version": "26.15.3",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "electron-prompt",
- "version": "1.7.0",
- "author": "p-sam",
- "license": "MIT"
- },
- {
- "name": "electron-publish",
- "version": "26.15.3",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "electron-winstaller",
- "version": "5.4.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "emoji-picker-element",
- "version": "1.29.1",
- "author": "Nolan Lawson",
- "license": "Apache-2.0"
- },
- {
- "name": "emoji-picker-element-data",
- "version": "1.8.0",
- "author": "Nolan Lawson",
- "license": "Apache-2.0"
- },
- {
- "name": "emoji-regex",
- "version": "8.0.0",
- "author": "Mathias Bynens",
- "license": "MIT"
- },
- {
- "name": "end-of-stream",
- "version": "1.1.0",
- "author": "Mathias Buus",
- "license": "MIT"
- },
- {
- "name": "enhanced-resolve",
- "version": "5.24.1",
- "author": "Tobias Koppers @sokra",
- "license": "MIT"
- },
- {
- "name": "entities",
- "version": "7.0.1",
- "author": "Felix Boehm",
- "license": "BSD-2-Clause"
- },
- {
- "name": "env-paths",
- "version": "2.2.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "err-code",
- "version": "2.0.2",
- "author": "IndigoUnited",
- "license": "MIT"
- },
- {
- "name": "es-abstract",
- "version": "1.5.0",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "es-define-property",
- "version": "1.0.1",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "es-errors",
- "version": "1.3.0",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "es-module-lexer",
- "version": "2.0.0",
- "author": "Guy Bedford",
- "license": "MIT"
- },
- {
- "name": "es-object-atoms",
- "version": "1.0.0",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "es-set-tostringtag",
- "version": "2.1.0",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "es-to-primitive",
- "version": "1.1.0",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "es6-error",
- "version": "4.1.1",
- "author": "Ben Youngblood",
- "license": "MIT"
- },
- {
- "name": "escalade",
- "version": "3.1.1",
- "author": "Luke Edwards",
- "license": "MIT"
- },
- {
- "name": "escape-string-regexp",
- "version": "4.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "eslint",
- "version": "9.39.5",
- "author": "Nicholas C. Zakas",
- "license": "MIT"
- },
- {
- "name": "eslint-config-prettier",
- "version": "10.1.8",
- "author": "Simon Lydell",
- "license": "MIT"
- },
- {
- "name": "eslint-plugin-prettier",
- "version": "5.5.6",
- "author": "Teddy Katz",
- "license": "MIT"
- },
- {
- "name": "eslint-plugin-security",
- "version": "3.0.1",
- "author": "Node Security Project",
- "license": "Apache-2.0"
- },
- {
- "name": "eslint-plugin-vue",
- "version": "10.10.0",
- "author": "Toru Nagashima",
- "license": "MIT"
- },
- {
- "name": "eslint-scope",
- "version": "8.2.0",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "eslint-visitor-keys",
- "version": "3.4.3",
- "author": "Toru Nagashima",
- "license": "Apache-2.0"
- },
- {
- "name": "esmangle-evaluator",
- "version": "1.0.0",
- "author": "Andres Suarez",
- "license": "Unknown"
- },
- {
- "name": "espree",
- "version": "10.3.0",
- "author": "Nicholas C. Zakas",
- "license": "BSD-2-Clause"
- },
- {
- "name": "esprima-fb",
- "version": "12001.1.0-dev-harmony-fb",
- "author": "Ariya Hidayat",
- "license": "BSD"
- },
- {
- "name": "esquery",
- "version": "1.6.0",
- "author": "Joel Feenstra",
- "license": "BSD-3-Clause"
- },
- {
- "name": "esrecurse",
- "version": "4.3.0",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "estraverse",
- "version": "5.1.0",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "estree-walker",
- "version": "2.0.2",
- "author": "Rich Harris",
- "license": "MIT"
- },
- {
- "name": "esutils",
- "version": "2.0.3",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "execa",
- "version": "0.10.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "expect-type",
- "version": "1.3.0",
- "author": "—",
- "license": "Apache-2.0"
- },
- {
- "name": "exponential-backoff",
- "version": "3.1.1",
- "author": "Sami Sayegh",
- "license": "Apache-2.0"
- },
- {
- "name": "fake-indexeddb",
- "version": "6.2.5",
- "author": "Jeremy Scheff",
- "license": "Apache-2.0"
- },
- {
- "name": "falafel",
- "version": "1.0.1",
- "author": "James Halliday",
- "license": "MIT"
- },
- {
- "name": "fast-deep-equal",
- "version": "3.1.3",
- "author": "Evgeny Poberezkin",
- "license": "MIT"
- },
- {
- "name": "fast-diff",
- "version": "1.1.2",
- "author": "Jason Chen",
- "license": "Apache-2.0"
- },
- {
- "name": "fast-json-stable-stringify",
- "version": "2.1.0",
- "author": "James Halliday",
- "license": "MIT"
- },
- {
- "name": "fast-levenshtein",
- "version": "2.0.6",
- "author": "Ramesh Nair",
- "license": "MIT"
- },
- {
- "name": "fast-uri",
- "version": "4.1.1",
- "author": "Vincent Le Goff",
- "license": "BSD-3-Clause"
- },
- {
- "name": "fd-package-json",
- "version": "2.0.0",
- "author": "James Garbutt",
- "license": "MIT"
- },
- {
- "name": "fdir",
- "version": "6.4.3",
- "author": "thecodrr",
- "license": "MIT"
- },
- {
- "name": "fflate",
- "version": "0.8.0",
- "author": "Arjun Barrett",
- "license": "MIT"
- },
- {
- "name": "file-entry-cache",
- "version": "8.0.0",
- "author": "Jared Wray",
- "license": "MIT"
- },
- {
- "name": "filelist",
- "version": "1.0.1",
- "author": "Matthew Eernisse",
- "license": "Apache-2.0"
- },
- {
- "name": "find-up",
- "version": "3.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "flat-cache",
- "version": "4.0.1",
- "author": "Jared Wray",
- "license": "MIT"
- },
- {
- "name": "flatted",
- "version": "3.4.2",
- "author": "Andrea Giammarchi",
- "license": "ISC"
- },
- {
- "name": "for-each",
- "version": "0.3.3",
- "author": "Raynos",
- "license": "MIT"
- },
- {
- "name": "foreach",
- "version": "2.0.6",
- "author": "Manuel Stofer",
- "license": "MIT"
- },
- {
- "name": "foreground-child",
- "version": "3.1.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "form-data",
- "version": "4.0.6",
- "author": "Felix Geisendörfer",
- "license": "MIT"
- },
- {
- "name": "formatly",
- "version": "0.3.0",
- "author": "Josh Goldberg ✨",
- "license": "MIT"
- },
- {
- "name": "fs-extra",
- "version": "7.0.1",
- "author": "JP Richardson",
- "license": "MIT"
- },
- {
- "name": "fs-minipass",
- "version": "3.0.3",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "fs.realpath",
- "version": "1.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "function-bind",
- "version": "1.0.2",
- "author": "Raynos",
- "license": "MIT"
- },
- {
- "name": "geotiff",
- "version": "3.0.5",
- "author": "Fabian Schindler",
- "license": "MIT"
- },
- {
- "name": "get-caller-file",
- "version": "1.0.1",
- "author": "Stefan Penner",
- "license": "ISC"
- },
- {
- "name": "get-intrinsic",
- "version": "1.2.6",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "get-stream",
- "version": "3.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "get-tsconfig",
- "version": "4.14.0",
- "author": "Hiroki Osame",
- "license": "MIT"
- },
- {
- "name": "glob",
- "version": "7.2.3",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "glob-parent",
- "version": "6.0.2",
- "author": "Gulp Team",
- "license": "ISC"
- },
- {
- "name": "global-agent",
- "version": "3.0.0",
- "author": "Gajus Kuizinas",
- "license": "BSD-3-Clause"
- },
- {
- "name": "globals",
- "version": "14.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "globalthis",
- "version": "1.0.1",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "gopd",
- "version": "1.2.0",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "got",
- "version": "11.8.6",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "graceful-fs",
- "version": "4.1.2",
- "author": "—",
- "license": "ISC"
- },
- {
- "name": "has-flag",
- "version": "4.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "has-symbols",
- "version": "1.0.3",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "has-tostringtag",
- "version": "1.0.2",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "hasown",
- "version": "2.0.4",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "hosted-git-info",
- "version": "2.8.9",
- "author": "Rebecca Turner",
- "license": "ISC"
- },
- {
- "name": "html-encoding-sniffer",
- "version": "6.0.0",
- "author": "Domenic Denicola",
- "license": "MIT"
- },
- {
- "name": "html-escaper",
- "version": "2.0.0",
- "author": "Andrea Giammarchi",
- "license": "MIT"
- },
- {
- "name": "http-cache-semantics",
- "version": "4.1.1",
- "author": "Kornel Lesiński",
- "license": "BSD-2-Clause"
- },
- {
- "name": "http-proxy-agent",
- "version": "7.0.0",
- "author": "Nathan Rajlich",
- "license": "MIT"
- },
- {
- "name": "http2-wrapper",
- "version": "1.0.0-beta.5.2",
- "author": "Szymon Marczak",
- "license": "MIT"
- },
- {
- "name": "https-proxy-agent",
- "version": "7.0.0",
- "author": "Nathan Rajlich",
- "license": "MIT"
- },
- {
- "name": "iconv-lite",
- "version": "0.7.2",
- "author": "Alexander Shtuchkin",
- "license": "MIT"
- },
- {
- "name": "ignore",
- "version": "5.3.2",
- "author": "kael",
- "license": "MIT"
- },
- {
- "name": "immediate",
- "version": "3.0.5",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "import-fresh",
- "version": "3.3.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "imurmurhash",
- "version": "0.1.4",
- "author": "Jens Taylor",
- "license": "MIT"
- },
- {
- "name": "inflight",
- "version": "1.0.4",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "inherits",
- "version": "2.0.1",
- "author": "—",
- "license": "ISC"
- },
- {
- "name": "inherits",
- "version": "2.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "WTFPL2"
- },
- {
- "name": "ini",
- "version": "1.3.6",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "inline-process-browser",
- "version": "1.0.0",
- "author": "Calvin W. Metcalf",
- "license": "MIT"
- },
- {
- "name": "invert-kv",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "ip-address",
- "version": "9.0.5",
- "author": "Beau Gunderson",
- "license": "MIT"
- },
- {
- "name": "is-blob",
- "version": "2.1.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "is-callable",
- "version": "1.1.1",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "is-date-object",
- "version": "1.0.1",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "is-extglob",
- "version": "2.1.1",
- "author": "Jon Schlinkert",
- "license": "MIT"
- },
- {
- "name": "is-fullwidth-code-point",
- "version": "1.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "is-glob",
- "version": "4.0.3",
- "author": "Jon Schlinkert",
- "license": "MIT"
- },
- {
- "name": "is-potential-custom-element-name",
- "version": "1.0.1",
- "author": "Mathias Bynens",
- "license": "MIT"
- },
- {
- "name": "is-regex",
- "version": "1.0.3",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "is-stream",
- "version": "1.1.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "is-symbol",
- "version": "1.0.1",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "isarray",
- "version": "0.0.1",
- "author": "Julian Gruber",
- "license": "MIT"
- },
- {
- "name": "isbinaryfile",
- "version": "4.0.8",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "isexe",
- "version": "2.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "isexe",
- "version": "3.1.5",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "istanbul-lib-coverage",
- "version": "3.2.2",
- "author": "Krishnan Anantheswaran",
- "license": "BSD-3-Clause"
- },
- {
- "name": "istanbul-lib-report",
- "version": "3.0.1",
- "author": "Krishnan Anantheswaran",
- "license": "BSD-3-Clause"
- },
- {
- "name": "istanbul-reports",
- "version": "3.2.0",
- "author": "Krishnan Anantheswaran",
- "license": "BSD-3-Clause"
- },
- {
- "name": "jackspeak",
- "version": "3.1.2",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "jake",
- "version": "10.8.5",
- "author": "Matthew Eernisse",
- "license": "Apache-2.0"
- },
- {
- "name": "jiti",
- "version": "2.4.2",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "js-beautify",
- "version": "1.14.9",
- "author": "Einar Lielmanis",
- "license": "MIT"
- },
- {
- "name": "js-tokens",
- "version": "10.0.0",
- "author": "Simon Lydell",
- "license": "MIT"
- },
- {
- "name": "js-yaml",
- "version": "4.2.0",
- "author": "Vladimir Zapparov",
- "license": "MIT"
- },
- {
- "name": "jsbn",
- "version": "1.1.0",
- "author": "Tom Wu",
- "license": "MIT"
- },
- {
- "name": "jsdom",
- "version": "29.1.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "json-buffer",
- "version": "3.0.1",
- "author": "Dominic Tarr",
- "license": "MIT"
- },
- {
- "name": "json-schema-traverse",
- "version": "0.4.1",
- "author": "Evgeny Poberezkin",
- "license": "MIT"
- },
- {
- "name": "json-stable-stringify-without-jsonify",
- "version": "1.0.1",
- "author": "James Halliday",
- "license": "MIT"
- },
- {
- "name": "json-stringify-pretty-compact",
- "version": "4.0.0",
- "author": "Simon Lydell",
- "license": "MIT"
- },
- {
- "name": "json-stringify-safe",
- "version": "5.0.1",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "json5",
- "version": "2.2.3",
- "author": "Aseem Kishore",
- "license": "MIT"
- },
- {
- "name": "jsonfile",
- "version": "4.0.0",
- "author": "JP Richardson",
- "license": "MIT"
- },
- {
- "name": "jsqr",
- "version": "1.4.0",
- "author": "—",
- "license": "Apache-2.0"
- },
- {
- "name": "jszip",
- "version": "3.10.1",
- "author": "Stuart Knightley",
- "license": "(MIT OR GPL-3.0-or-later)"
- },
- {
- "name": "keycharm",
- "version": "0.4.0",
- "author": "Alex de Mulder",
- "license": "(Apache-2.0 OR MIT)"
- },
- {
- "name": "keyv",
- "version": "4.0.0",
- "author": "Jared Wray",
- "license": "MIT"
- },
- {
- "name": "knip",
- "version": "6.29.0",
- "author": "Lars Kappert",
- "license": "ISC"
- },
- {
- "name": "lazy-val",
- "version": "1.0.5",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "lcid",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "lerc",
- "version": "3.0.0",
- "author": "Esri",
- "license": "Apache-2.0"
- },
- {
- "name": "levn",
- "version": "0.4.1",
- "author": "George Zahariev",
- "license": "MIT"
- },
- {
- "name": "lie",
- "version": "3.3.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "lightningcss",
- "version": "1.32.0",
- "author": "—",
- "license": "MPL-2.0"
- },
- {
- "name": "lightningcss-linux-x64-gnu",
- "version": "1.32.0",
- "author": "—",
- "license": "MPL-2.0"
- },
- {
- "name": "locate-path",
- "version": "3.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "lodash",
- "version": "4.18.0",
- "author": "John-David Dalton",
- "license": "MIT"
- },
- {
- "name": "lodash.merge",
- "version": "4.6.2",
- "author": "John-David Dalton",
- "license": "MIT"
- },
- {
- "name": "lowercase-keys",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "lru-cache",
- "version": "6.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "lru-cache",
- "version": "11.3.5",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "magic-string",
- "version": "0.30.21",
- "author": "Rich Harris",
- "license": "MIT"
- },
- {
- "name": "magicast",
- "version": "0.5.2",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "make-dir",
- "version": "4.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "make-fetch-happen",
- "version": "15.0.6",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "mapbox-to-css-font",
- "version": "3.2.0",
- "author": "Andreas Hocevar",
- "license": "BSD-2-Clause"
- },
- {
- "name": "marked",
- "version": "18.0.7",
- "author": "Christopher Jeffrey",
- "license": "MIT"
- },
- {
- "name": "matcher",
- "version": "3.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "math-intrinsics",
- "version": "1.0.0",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "mdn-data",
- "version": "2.27.1",
- "author": "Mozilla Developer Network",
- "license": "CC0-1.0"
- },
- {
- "name": "mem",
- "version": "3.0.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "micron-parser",
- "version": "0.0.0",
- "author": "—",
- "license": "Unknown"
- },
- {
- "name": "mime",
- "version": "2.5.2",
- "author": "Robert Kieffer",
- "license": "MIT"
- },
- {
- "name": "mime-db",
- "version": "1.52.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "mime-types",
- "version": "2.1.35",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "mimic-fn",
- "version": "1.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "mimic-response",
- "version": "1.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "mini-svg-data-uri",
- "version": "1.2.3",
- "author": "Taylor “Tigt” Hunt",
- "license": "MIT"
- },
- {
- "name": "minimatch",
- "version": "3.1.4",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "minimatch",
- "version": "10.2.3",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "minimist",
- "version": "1.2.8",
- "author": "James Halliday",
- "license": "MIT"
- },
- {
- "name": "minipass",
- "version": "3.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "minipass-collect",
- "version": "2.0.1",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "minipass-fetch",
- "version": "5.0.2",
- "author": "GitHub Inc.",
- "license": "MIT"
- },
- {
- "name": "minipass-flush",
- "version": "1.0.7",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "minipass-pipeline",
- "version": "1.2.4",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "minipass-sized",
- "version": "2.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "minizlib",
- "version": "3.0.1",
- "author": "Isaac Z. Schlueter",
- "license": "MIT"
- },
- {
- "name": "mrmime",
- "version": "2.0.0",
- "author": "Luke Edwards",
- "license": "MIT"
- },
- {
- "name": "ms",
- "version": "2.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "muggle-string",
- "version": "0.4.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "nanoid",
- "version": "3.3.12",
- "author": "Andrey Sitnik",
- "license": "MIT"
- },
- {
- "name": "natural-compare",
- "version": "1.4.0",
- "author": "Lauri Rooden",
- "license": "MIT"
- },
- {
- "name": "negotiator",
- "version": "1.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "node-abi",
- "version": "4.2.0",
- "author": "Lukas Geiger",
- "license": "MIT"
- },
- {
- "name": "node-api-version",
- "version": "0.2.1",
- "author": "Tim Fish",
- "license": "MIT"
- },
- {
- "name": "node-gyp",
- "version": "12.2.0",
- "author": "Nathan Rajlich",
- "license": "MIT"
- },
- {
- "name": "node-int64",
- "version": "0.4.0",
- "author": "Robert Kieffer",
- "license": "MIT"
- },
- {
- "name": "nopt",
- "version": "6.0.0",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "normalize-url",
- "version": "6.0.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "npm-run-path",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "nth-check",
- "version": "2.1.1",
- "author": "Felix Boehm",
- "license": "BSD-2-Clause"
- },
- {
- "name": "number-is-nan",
- "version": "1.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "numcodecs",
- "version": "0.3.2",
- "author": "Trevor Manz",
- "license": "MIT"
- },
- {
- "name": "object-assign",
- "version": "4.1.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "object-keys",
- "version": "1.0.8",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "obug",
- "version": "2.1.1",
- "author": "Kevin Deng",
- "license": "MIT"
- },
- {
- "name": "ol",
- "version": "10.9.0",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "ol-mapbox-style",
- "version": "13.4.1",
- "author": "—",
- "license": "BSD-2-Clause"
- },
- {
- "name": "once",
- "version": "1.3.0",
- "author": "Isaac Z. Schlueter",
- "license": "BSD"
- },
- {
- "name": "optionator",
- "version": "0.9.4",
- "author": "George Zahariev",
- "license": "MIT"
- },
- {
- "name": "os-locale",
- "version": "3.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "oxc-parser",
- "version": "0.140.0",
- "author": "Boshen and oxc contributors",
- "license": "MIT"
- },
- {
- "name": "oxc-resolver",
- "version": "11.24.2",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "p-cancelable",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "p-finally",
- "version": "1.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "p-is-promise",
- "version": "1.1.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "p-limit",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "p-locate",
- "version": "3.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "p-map",
- "version": "7.0.6",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "p-try",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "package-json-from-dist",
- "version": "1.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "pako",
- "version": "1.0.2",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "pako",
- "version": "2.0.4",
- "author": "—",
- "license": "(MIT AND Zlib)"
- },
- {
- "name": "parent-module",
- "version": "1.0.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "parse-headers",
- "version": "2.0.2",
- "author": "David Björklund",
- "license": "MIT"
- },
- {
- "name": "parse5",
- "version": "8.0.1",
- "author": "Ivan Nikulin",
- "license": "MIT"
- },
- {
- "name": "path-browserify",
- "version": "1.0.1",
- "author": "James Halliday",
- "license": "MIT"
- },
- {
- "name": "path-exists",
- "version": "3.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "path-is-absolute",
- "version": "1.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "path-key",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "path-scurry",
- "version": "1.11.1",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "pathe",
- "version": "2.0.3",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "pbf",
- "version": "4.0.1",
- "author": "Konstantin Kaefer",
- "license": "BSD-3-Clause"
- },
- {
- "name": "pe-library",
- "version": "0.4.0",
- "author": "jet",
- "license": "MIT"
- },
- {
- "name": "picocolors",
- "version": "1.1.1",
- "author": "Alexey Raspopov",
- "license": "ISC"
- },
- {
- "name": "picomatch",
- "version": "4.0.4",
- "author": "Jon Schlinkert",
- "license": "MIT"
- },
- {
- "name": "pkijs",
- "version": "3.4.0",
- "author": "Yury Strozhevsky",
- "license": "BSD-3-Clause"
- },
- {
- "name": "playwright",
- "version": "1.61.1",
- "author": "Microsoft Corporation",
- "license": "Apache-2.0"
- },
- {
- "name": "playwright-core",
- "version": "1.61.1",
- "author": "Microsoft Corporation",
- "license": "Apache-2.0"
- },
- {
- "name": "plist",
- "version": "3.0.5",
- "author": "Nathan Rajlich",
- "license": "MIT"
- },
- {
- "name": "pngjs",
- "version": "5.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "postcss",
- "version": "8.5.19",
- "author": "Andrey Sitnik",
- "license": "MIT"
- },
- {
- "name": "postcss-selector-parser",
- "version": "7.1.4",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "postject",
- "version": "1.0.0-alpha.6",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "prelude-ls",
- "version": "1.2.1",
- "author": "George Zahariev",
- "license": "MIT"
- },
- {
- "name": "prettier",
- "version": "3.9.6",
- "author": "James Long",
- "license": "MIT"
- },
- {
- "name": "prettier-linter-helpers",
- "version": "1.0.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "private",
- "version": "0.1.5",
- "author": "Ben Newman",
- "license": "MIT"
- },
- {
- "name": "proc-log",
- "version": "6.0.0",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "process-nextick-args",
- "version": "1.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "progress",
- "version": "2.0.3",
- "author": "TJ Holowaychuk",
- "license": "MIT"
- },
- {
- "name": "promise-retry",
- "version": "2.0.1",
- "author": "IndigoUnited",
- "license": "MIT"
- },
- {
- "name": "proper-lockfile",
- "version": "4.1.2",
- "author": "André Cruz",
- "license": "MIT"
- },
- {
- "name": "proto-list",
- "version": "1.2.1",
- "author": "Isaac Z. Schlueter",
- "license": "MIT"
- },
- {
- "name": "protocol-buffers-schema",
- "version": "3.6.1",
- "author": "Mathias Buus",
- "license": "MIT"
- },
- {
- "name": "pump",
- "version": "3.0.0",
- "author": "Mathias Buus Madsen",
- "license": "MIT"
- },
- {
- "name": "punycode",
- "version": "2.3.1",
- "author": "Mathias Bynens",
- "license": "MIT"
- },
- {
- "name": "pvtsutils",
- "version": "1.3.6",
- "author": "PeculiarVentures",
- "license": "MIT"
- },
- {
- "name": "pvutils",
- "version": "1.1.3",
- "author": "Yury Strozhevsky",
- "license": "MIT"
- },
- {
- "name": "qrcode",
- "version": "1.5.4",
- "author": "Ryan Day",
- "license": "MIT"
- },
- {
- "name": "quick-lru",
- "version": "5.1.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "quickselect",
- "version": "2.0.0",
- "author": "Vladimir Agafonkin",
- "license": "ISC"
- },
- {
- "name": "rbush",
- "version": "4.0.0",
- "author": "Volodymyr Agafonkin",
- "license": "MIT"
- },
- {
- "name": "read-binary-file-arch",
- "version": "1.0.6",
- "author": "Samuel Maddock",
- "license": "MIT"
- },
- {
- "name": "readable-stream",
- "version": "1.0.31",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "recast",
- "version": "0.10.1",
- "author": "Ben Newman",
- "license": "MIT"
- },
- {
- "name": "reference-spec-reader",
- "version": "0.2.0",
- "author": "manzt",
- "license": "MIT"
- },
- {
- "name": "regexp-tree",
- "version": "0.1.1",
- "author": "Dmitry Soshnikov",
- "license": "MIT"
- },
- {
- "name": "require-directory",
- "version": "2.1.1",
- "author": "Troy Goode",
- "license": "MIT"
- },
- {
- "name": "require-from-string",
- "version": "2.0.2",
- "author": "Vsevolod Strukchinsky",
- "license": "MIT"
- },
- {
- "name": "require-main-filename",
- "version": "1.0.1",
- "author": "Ben Coe",
- "license": "ISC"
- },
- {
- "name": "resedit",
- "version": "1.7.0",
- "author": "jet",
- "license": "MIT"
- },
- {
- "name": "resolve-alpn",
- "version": "1.0.0",
- "author": "Szymon Marczak",
- "license": "MIT"
- },
- {
- "name": "resolve-from",
- "version": "4.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "resolve-pkg-maps",
- "version": "1.0.0",
- "author": "Hiroki Osame",
- "license": "MIT"
- },
- {
- "name": "resolve-protobuf-schema",
- "version": "2.1.0",
- "author": "Mathias Buus",
- "license": "MIT"
- },
- {
- "name": "responselike",
- "version": "2.0.0",
- "author": "lukechilds",
- "license": "MIT"
- },
- {
- "name": "retry",
- "version": "0.12.0",
- "author": "Tim Koschützki",
- "license": "MIT"
- },
- {
- "name": "rimraf",
- "version": "2.6.2",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "roarr",
- "version": "2.15.3",
- "author": "Gajus Kuizinas",
- "license": "BSD-3-Clause"
- },
- {
- "name": "rolldown",
- "version": "1.1.5",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "rw",
- "version": "1.3.3",
- "author": "Mike Bostock",
- "license": "BSD-3-Clause"
- },
- {
- "name": "safe-buffer",
- "version": "5.1.1",
- "author": "Feross Aboukhadijeh",
- "license": "MIT"
- },
- {
- "name": "safe-regex",
- "version": "2.1.1",
- "author": "James C.",
- "license": "MIT"
- },
- {
- "name": "safer-buffer",
- "version": "2.1.2",
- "author": "Nikita Skovoroda",
- "license": "MIT"
- },
- {
- "name": "sanitize-filename",
- "version": "1.6.3",
- "author": "Parsha Pourkhomami",
- "license": "WTFPL OR ISC"
- },
- {
- "name": "sax",
- "version": "1.2.4",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "saxes",
- "version": "6.0.0",
- "author": "Louis-Dominique Dubeau",
- "license": "ISC"
- },
- {
- "name": "semver",
- "version": "7.5.2",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "semver-compare",
- "version": "1.0.0",
- "author": "James Halliday",
- "license": "MIT"
- },
- {
- "name": "serialize-error",
- "version": "7.0.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "set-blocking",
- "version": "2.0.0",
- "author": "Ben Coe",
- "license": "ISC"
- },
- {
- "name": "setimmediate",
- "version": "1.0.5",
- "author": "YuzuJS",
- "license": "MIT"
- },
- {
- "name": "shebang-command",
- "version": "2.0.0",
- "author": "Kevin Mårtensson",
- "license": "MIT"
- },
- {
- "name": "shebang-regex",
- "version": "3.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "siginfo",
- "version": "2.0.0",
- "author": "Emil Bay",
- "license": "ISC"
- },
- {
- "name": "signal-exit",
- "version": "3.0.0",
- "author": "Ben Coe",
- "license": "ISC"
- },
- {
- "name": "simple-update-notifier",
- "version": "2.0.0",
- "author": "alexbrazier",
- "license": "MIT"
- },
- {
- "name": "sirv",
- "version": "3.0.2",
- "author": "Luke Edwards",
- "license": "MIT"
- },
- {
- "name": "smart-buffer",
- "version": "4.2.0",
- "author": "Josh Glazebrook",
- "license": "MIT"
- },
- {
- "name": "smol-toml",
- "version": "1.7.0",
- "author": "Cynthia Rey",
- "license": "BSD-3-Clause"
- },
- {
- "name": "socks",
- "version": "2.8.0",
- "author": "Josh Glazebrook",
- "license": "MIT"
- },
- {
- "name": "socks-proxy-agent",
- "version": "8.0.3",
- "author": "Nathan Rajlich",
- "license": "MIT"
- },
- {
- "name": "source-map",
- "version": "0.6.0",
- "author": "Nick Fitzgerald",
- "license": "BSD-3-Clause"
- },
- {
- "name": "source-map",
- "version": "0.3.0",
- "author": "Nick Fitzgerald",
- "license": "BSD"
- },
- {
- "name": "source-map-js",
- "version": "1.0.2",
- "author": "Valentin 7rulnik Semirulnik",
- "license": "BSD-3-Clause"
- },
- {
- "name": "source-map-support",
- "version": "0.5.19",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "sprintf-js",
- "version": "1.1.2",
- "author": "Alexandru Mărășteanu",
- "license": "BSD-3-Clause"
- },
- {
- "name": "ssri",
- "version": "13.0.1",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "stackback",
- "version": "0.0.2",
- "author": "Roman Shtylman",
- "license": "MIT"
- },
- {
- "name": "stat-mode",
- "version": "1.0.0",
- "author": "Nathan Rajlich",
- "license": "MIT"
- },
- {
- "name": "std-env",
- "version": "4.0.0-rc.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "string-width",
- "version": "1.0.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "string.prototype.trim",
- "version": "1.1.2",
- "author": "Jordan Harband",
- "license": "MIT"
- },
- {
- "name": "string_decoder",
- "version": "0.10.24",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "strip-ansi",
- "version": "6.0.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "strip-eof",
- "version": "1.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "strip-json-comments",
- "version": "3.1.1",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "sumchecker",
- "version": "3.0.1",
- "author": "Mark Lee",
- "license": "Apache-2.0"
- },
- {
- "name": "supports-color",
- "version": "7.1.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "symbol-tree",
- "version": "3.2.4",
- "author": "Joris van der Wel",
- "license": "MIT"
- },
- {
- "name": "synckit",
- "version": "0.11.13",
- "author": "JounQin",
- "license": "MIT"
- },
- {
- "name": "tailwindcss",
- "version": "4.3.3",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "tapable",
- "version": "2.3.3",
- "author": "Tobias Koppers @sokra",
- "license": "MIT"
- },
- {
- "name": "tar",
- "version": "7.5.21",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "temp",
- "version": "0.9.0",
- "author": "Bruce Williams",
- "license": "MIT"
- },
- {
- "name": "temp-file",
- "version": "3.4.0",
- "author": "Vladimir Krivosheev",
- "license": "MIT"
- },
- {
- "name": "terser",
- "version": "5.49.0",
- "author": "Mihai Bazon",
- "license": "BSD-2-Clause"
- },
- {
- "name": "through2",
- "version": "0.6.2",
- "author": "Rod Vagg",
- "license": "MIT"
- },
- {
- "name": "tiny-async-pool",
- "version": "1.3.0",
- "author": "Rafael Xavier de Souza",
- "license": "MIT"
- },
- {
- "name": "tinybench",
- "version": "2.9.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "tinyexec",
- "version": "1.0.2",
- "author": "James Garbutt",
- "license": "MIT"
- },
- {
- "name": "tinyglobby",
- "version": "0.2.12",
- "author": "Superchupu",
- "license": "MIT"
- },
- {
- "name": "tinyqueue",
- "version": "3.0.0",
- "author": "—",
- "license": "ISC"
- },
- {
- "name": "tinyrainbow",
- "version": "3.1.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "tldts",
- "version": "7.0.5",
- "author": "Rémi Berson",
- "license": "MIT"
- },
- {
- "name": "tldts-core",
- "version": "7.0.5",
- "author": "Rémi Berson",
- "license": "MIT"
- },
- {
- "name": "tmp",
- "version": "0.2.7",
- "author": "KARASZI István",
- "license": "MIT"
- },
- {
- "name": "tmp-promise",
- "version": "3.0.2",
- "author": "Benjamin Gruenbaum and Collaborators.",
- "license": "MIT"
- },
- {
- "name": "totalist",
- "version": "3.0.0",
- "author": "Luke Edwards",
- "license": "MIT"
- },
- {
- "name": "tough-cookie",
- "version": "6.0.1",
- "author": "Jeremy Stashewsky",
- "license": "BSD-3-Clause"
- },
- {
- "name": "tr46",
- "version": "6.0.0",
- "author": "Sebastian Mayr",
- "license": "MIT"
- },
- {
- "name": "truncate-utf8-bytes",
- "version": "1.0.0",
- "author": "Carl Xiong",
- "license": "WTFPL"
- },
- {
- "name": "tslib",
- "version": "2.8.1",
- "author": "Microsoft Corp.",
- "license": "0BSD"
- },
- {
- "name": "type-check",
- "version": "0.4.0",
- "author": "George Zahariev",
- "license": "MIT"
- },
- {
- "name": "type-fest",
- "version": "0.13.1",
- "author": "Sindre Sorhus",
- "license": "(MIT OR CC0-1.0)"
- },
- {
- "name": "typescript",
- "version": "6.0.3",
- "author": "Microsoft Corp.",
- "license": "Apache-2.0"
- },
- {
- "name": "unbash",
- "version": "4.0.3",
- "author": "Lars Kappert",
- "license": "ISC"
- },
- {
- "name": "undici",
- "version": "7.28.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "undici-types",
- "version": "7.16.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "universalify",
- "version": "0.1.0",
- "author": "Ryan Zimmerman",
- "license": "MIT"
- },
- {
- "name": "unreachable-branch-transform",
- "version": "0.3.0",
- "author": "Andres Suarez",
- "license": "MIT"
- },
- {
- "name": "unzipit",
- "version": "2.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "unzipper",
- "version": "0.12.3",
- "author": "Evan Oxfeld",
- "license": "MIT"
- },
- {
- "name": "upath",
- "version": "2.0.1",
- "author": "Angelos Pikoulas",
- "license": "MIT"
- },
- {
- "name": "uri-js",
- "version": "4.4.1",
- "author": "Gary Court",
- "license": "BSD-2-Clause"
- },
- {
- "name": "utf8-byte-length",
- "version": "1.0.1",
- "author": "Carl Xiong",
- "license": "WTFPL"
- },
- {
- "name": "util-deprecate",
- "version": "1.0.1",
- "author": "Nathan Rajlich",
- "license": "MIT"
- },
- {
- "name": "uuid",
- "version": "14.0.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "vis-data",
- "version": "7.1.10",
- "author": "—",
- "license": "(Apache-2.0 OR MIT)"
- },
- {
- "name": "vis-network",
- "version": "9.1.13",
- "author": "—",
- "license": "(Apache-2.0 OR MIT)"
- },
- {
- "name": "vis-util",
- "version": "5.0.7",
- "author": "Alex de Mulder",
- "license": "(Apache-2.0 OR MIT)"
- },
- {
- "name": "vite",
- "version": "8.1.5",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "vite-plugin-vuetify",
- "version": "2.1.3",
- "author": "Kael Watts-Deuchar",
- "license": "MIT"
- },
- {
- "name": "vitest",
- "version": "4.1.10",
- "author": "Anthony Fu",
- "license": "MIT"
- },
- {
- "name": "vscode-uri",
- "version": "3.0.8",
- "author": "Microsoft",
- "license": "MIT"
- },
- {
- "name": "vue",
- "version": "3.5.40",
- "author": "Evan You",
- "license": "MIT"
- },
- {
- "name": "vue-component-type-helpers",
- "version": "3.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "vue-eslint-parser",
- "version": "10.4.1",
- "author": "Toru Nagashima",
- "license": "MIT"
- },
- {
- "name": "vue-i18n",
- "version": "11.4.7",
- "author": "kazuya kawaguchi",
- "license": "MIT"
- },
- {
- "name": "vue-router",
- "version": "4.6.4",
- "author": "Eduardo San Martin Morote",
- "license": "MIT"
- },
- {
- "name": "vue-tsc",
- "version": "3.3.7",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "vuetify",
- "version": "3.12.10",
- "author": "John Leider",
- "license": "MIT"
- },
- {
- "name": "w3c-xmlserializer",
- "version": "5.0.0",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "walk-up-path",
- "version": "4.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "web-worker",
- "version": "1.5.0",
- "author": "—",
- "license": "Apache-2.0"
- },
- {
- "name": "webcrypto-core",
- "version": "1.9.2",
- "author": "PeculiarVentures",
- "license": "MIT"
- },
- {
- "name": "webidl-conversions",
- "version": "8.0.1",
- "author": "Domenic Denicola",
- "license": "BSD-2-Clause"
- },
- {
- "name": "whatwg-mimetype",
- "version": "5.0.0",
- "author": "Domenic Denicola",
- "license": "MIT"
- },
- {
- "name": "whatwg-url",
- "version": "16.0.1",
- "author": "Sebastian Mayr",
- "license": "MIT"
- },
- {
- "name": "which",
- "version": "2.0.1",
- "author": "GitHub Inc.",
- "license": "ISC"
- },
- {
- "name": "which-module",
- "version": "2.0.0",
- "author": "nexdrew",
- "license": "ISC"
- },
- {
- "name": "why-is-node-running",
- "version": "2.3.0",
- "author": "Mathias Buus",
- "license": "MIT"
- },
- {
- "name": "word-wrap",
- "version": "1.2.5",
- "author": "Jon Schlinkert",
- "license": "MIT"
- },
- {
- "name": "wrap-ansi",
- "version": "2.0.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "wrappy",
- "version": "1.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "xml-name-validator",
- "version": "5.0.0",
- "author": "Domenic Denicola",
- "license": "Apache-2.0"
- },
- {
- "name": "xml-utils",
- "version": "1.10.2",
- "author": "Daniel J. Dufour",
- "license": "CC0-1.0"
- },
- {
- "name": "xmlbuilder",
- "version": "9.0.7",
- "author": "Ozgur Ozcitak",
- "license": "MIT"
- },
- {
- "name": "xmlchars",
- "version": "2.2.0",
- "author": "Louis-Dominique Dubeau",
- "license": "MIT"
- },
- {
- "name": "xtend",
- "version": "4.0.0",
- "author": "Raynos",
- "license": "MIT"
- },
- {
- "name": "y18n",
- "version": "5.0.5",
- "author": "Ben Coe",
- "license": "ISC"
- },
- {
- "name": "yallist",
- "version": "4.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "ISC"
- },
- {
- "name": "yallist",
- "version": "5.0.0",
- "author": "Isaac Z. Schlueter",
- "license": "BlueOak-1.0.0"
- },
- {
- "name": "yaml",
- "version": "2.9.0",
- "author": "Eemeli Aro",
- "license": "ISC"
- },
- {
- "name": "yargs",
- "version": "12.0.5",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "yargs-parser",
- "version": "21.1.1",
- "author": "Ben Coe",
- "license": "ISC"
- },
- {
- "name": "yocto-queue",
- "version": "0.1.0",
- "author": "Sindre Sorhus",
- "license": "MIT"
- },
- {
- "name": "zarrita",
- "version": "0.7.1",
- "author": "—",
- "license": "MIT"
- },
- {
- "name": "zod",
- "version": "4.4.3",
- "author": "Colin McDonnell",
- "license": "MIT"
- },
- {
- "name": "zstddec",
- "version": "0.2.0",
- "author": "Don McCurdy",
- "license": "MIT AND BSD-3-Clause"
- }
+ {
+ "name": "@asamuzakjp/css-color",
+ "version": "5.1.11",
+ "author": "asamuzaK",
+ "license": "MIT"
+ },
+ {
+ "name": "@asamuzakjp/dom-selector",
+ "version": "7.1.1",
+ "author": "asamuzaK",
+ "license": "MIT"
+ },
+ {
+ "name": "@asamuzakjp/generational-cache",
+ "version": "1.0.1",
+ "author": "asamuzaK",
+ "license": "MIT"
+ },
+ {
+ "name": "@asamuzakjp/nwsapi",
+ "version": "2.3.9",
+ "author": "Diego Perini",
+ "license": "MIT"
+ },
+ {
+ "name": "@babel/helper-string-parser",
+ "version": "7.27.1",
+ "author": "The Babel Team",
+ "license": "MIT"
+ },
+ {
+ "name": "@babel/helper-validator-identifier",
+ "version": "7.28.5",
+ "author": "The Babel Team",
+ "license": "MIT"
+ },
+ {
+ "name": "@babel/parser",
+ "version": "7.29.0",
+ "author": "The Babel Team",
+ "license": "MIT"
+ },
+ {
+ "name": "@babel/types",
+ "version": "7.29.0",
+ "author": "The Babel Team",
+ "license": "MIT"
+ },
+ {
+ "name": "@bcoe/v8-coverage",
+ "version": "1.0.2",
+ "author": "Charles Samborski",
+ "license": "MIT"
+ },
+ {
+ "name": "@bramus/specificity",
+ "version": "2.4.2",
+ "author": "Bramus Van Damme",
+ "license": "MIT"
+ },
+ {
+ "name": "@csstools/color-helpers",
+ "version": "6.0.2",
+ "author": "—",
+ "license": "MIT-0"
+ },
+ {
+ "name": "@csstools/css-calc",
+ "version": "3.2.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@csstools/css-color-parser",
+ "version": "4.1.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@csstools/css-parser-algorithms",
+ "version": "4.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@csstools/css-syntax-patches-for-csstree",
+ "version": "1.1.3",
+ "author": "—",
+ "license": "MIT-0"
+ },
+ {
+ "name": "@csstools/css-tokenizer",
+ "version": "4.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@egjs/hammerjs",
+ "version": "2.0.17",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@electron-internal/extract-zip",
+ "version": "1.0.1",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "@electron/asar",
+ "version": "3.4.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@electron/fuses",
+ "version": "1.8.0",
+ "author": "Electron Community",
+ "license": "MIT"
+ },
+ {
+ "name": "@electron/get",
+ "version": "3.1.0",
+ "author": "Samuel Attard",
+ "license": "MIT"
+ },
+ {
+ "name": "@electron/notarize",
+ "version": "2.5.0",
+ "author": "Samuel Attard",
+ "license": "MIT"
+ },
+ {
+ "name": "@electron/osx-sign",
+ "version": "1.3.3",
+ "author": "electron",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "@electron/rebuild",
+ "version": "4.0.4",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@electron/universal",
+ "version": "2.0.3",
+ "author": "Samuel Attard",
+ "license": "MIT"
+ },
+ {
+ "name": "@electron/windows-sign",
+ "version": "1.1.2",
+ "author": "Felix Rieseberg",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "@epic-web/invariant",
+ "version": "1.0.0",
+ "author": "Kent C. Dodds",
+ "license": "MIT"
+ },
+ {
+ "name": "@eslint-community/eslint-utils",
+ "version": "4.8.0",
+ "author": "Toru Nagashima",
+ "license": "MIT"
+ },
+ {
+ "name": "@eslint-community/regexpp",
+ "version": "4.12.2",
+ "author": "Toru Nagashima",
+ "license": "MIT"
+ },
+ {
+ "name": "@eslint/config-array",
+ "version": "0.21.2",
+ "author": "Nicholas C. Zakas",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@eslint/config-helpers",
+ "version": "0.4.2",
+ "author": "—",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@eslint/core",
+ "version": "0.17.0",
+ "author": "Nicholas C. Zakas",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@eslint/eslintrc",
+ "version": "3.3.6",
+ "author": "Nicholas C. Zakas",
+ "license": "MIT"
+ },
+ {
+ "name": "@eslint/js",
+ "version": "9.39.5",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@eslint/object-schema",
+ "version": "2.1.7",
+ "author": "Nicholas C. Zakas",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@eslint/plugin-kit",
+ "version": "0.4.1",
+ "author": "Nicholas C. Zakas",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@exodus/bytes",
+ "version": "1.15.0",
+ "author": "Exodus Movement, Inc.",
+ "license": "MIT"
+ },
+ {
+ "name": "@fontsource/noto-sans",
+ "version": "5.3.0",
+ "author": "Google Inc.",
+ "license": "OFL-1.1"
+ },
+ {
+ "name": "@gar/promise-retry",
+ "version": "1.0.3",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@humanfs/core",
+ "version": "0.19.2",
+ "author": "Nicholas C. Zakas",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@humanfs/node",
+ "version": "0.16.8",
+ "author": "Nicholas C. Zakas",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@humanfs/types",
+ "version": "0.15.0",
+ "author": "Nicholas C. Zakas",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@humanwhocodes/module-importer",
+ "version": "1.0.1",
+ "author": "Nicholas C. Zaks",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@humanwhocodes/retry",
+ "version": "0.4.3",
+ "author": "Nicholas C. Zaks",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@intlify/core-base",
+ "version": "11.4.7",
+ "author": "kazuya kawaguchi",
+ "license": "MIT"
+ },
+ {
+ "name": "@intlify/devtools-types",
+ "version": "11.4.7",
+ "author": "kazuya kawaguchi",
+ "license": "MIT"
+ },
+ {
+ "name": "@intlify/message-compiler",
+ "version": "11.4.7",
+ "author": "kazuya kawaguchi",
+ "license": "MIT"
+ },
+ {
+ "name": "@intlify/shared",
+ "version": "11.4.7",
+ "author": "kazuya kawaguchi",
+ "license": "MIT"
+ },
+ {
+ "name": "@isaacs/cliui",
+ "version": "8.0.2",
+ "author": "Ben Coe",
+ "license": "ISC"
+ },
+ {
+ "name": "@isaacs/fs-minipass",
+ "version": "4.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "@jridgewell/gen-mapping",
+ "version": "0.3.0",
+ "author": "Justin Ridgewell",
+ "license": "MIT"
+ },
+ {
+ "name": "@jridgewell/remapping",
+ "version": "2.3.5",
+ "author": "Justin Ridgewell",
+ "license": "MIT"
+ },
+ {
+ "name": "@jridgewell/resolve-uri",
+ "version": "3.0.3",
+ "author": "Justin Ridgewell",
+ "license": "MIT"
+ },
+ {
+ "name": "@jridgewell/set-array",
+ "version": "1.2.1",
+ "author": "Justin Ridgewell",
+ "license": "MIT"
+ },
+ {
+ "name": "@jridgewell/source-map",
+ "version": "0.3.3",
+ "author": "Justin Ridgewell",
+ "license": "MIT"
+ },
+ {
+ "name": "@jridgewell/sourcemap-codec",
+ "version": "1.4.10",
+ "author": "Justin Ridgewell",
+ "license": "MIT"
+ },
+ {
+ "name": "@jridgewell/trace-mapping",
+ "version": "0.3.9",
+ "author": "Justin Ridgewell",
+ "license": "MIT"
+ },
+ {
+ "name": "@malept/cross-spawn-promise",
+ "version": "2.0.0",
+ "author": "Mark Lee",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@malept/flatpak-bundler",
+ "version": "0.4.0",
+ "author": "Matt Watson",
+ "license": "MIT"
+ },
+ {
+ "name": "@mapbox/jsonlint-lines-primitives",
+ "version": "2.0.2",
+ "author": "Zach Carter",
+ "license": "Unknown"
+ },
+ {
+ "name": "@mapbox/unitbezier",
+ "version": "0.0.1",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "@maplibre/maplibre-gl-style-spec",
+ "version": "24.4.1",
+ "author": "MapLibre",
+ "license": "ISC"
+ },
+ {
+ "name": "@mdi/font",
+ "version": "7.4.47",
+ "author": "Austin Andrews",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@mdi/js",
+ "version": "7.4.47",
+ "author": "Austin Andrews",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@noble/hashes",
+ "version": "1.4.0",
+ "author": "Paul Miller",
+ "license": "MIT"
+ },
+ {
+ "name": "@npmcli/agent",
+ "version": "4.0.2",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "@npmcli/fs",
+ "version": "5.0.0",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "@npmcli/redact",
+ "version": "4.0.0",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "@one-ini/wasm",
+ "version": "0.1.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@oxc-parser/binding-linux-x64-gnu",
+ "version": "0.140.0",
+ "author": "Boshen and oxc contributors",
+ "license": "MIT"
+ },
+ {
+ "name": "@oxc-project/types",
+ "version": "0.139.0",
+ "author": "Boshen and oxc contributors",
+ "license": "MIT"
+ },
+ {
+ "name": "@oxc-resolver/binding-linux-x64-gnu",
+ "version": "11.24.2",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@peculiar/asn1-schema",
+ "version": "2.7.0",
+ "author": "PeculiarVentures, LLC",
+ "license": "MIT"
+ },
+ {
+ "name": "@peculiar/json-schema",
+ "version": "1.1.12",
+ "author": "PeculiarVentures, Inc",
+ "license": "MIT"
+ },
+ {
+ "name": "@peculiar/utils",
+ "version": "2.0.3",
+ "author": "PeculiarVentures",
+ "license": "MIT"
+ },
+ {
+ "name": "@peculiar/webcrypto",
+ "version": "1.7.1",
+ "author": "PeculiarVentures",
+ "license": "MIT"
+ },
+ {
+ "name": "@petamoriken/float16",
+ "version": "3.9.3",
+ "author": "Kenta Moriuchi",
+ "license": "MIT"
+ },
+ {
+ "name": "@pkgjs/parseargs",
+ "version": "0.11.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@pkgr/core",
+ "version": "0.3.6",
+ "author": "JounQin",
+ "license": "MIT"
+ },
+ {
+ "name": "@playwright/test",
+ "version": "1.61.1",
+ "author": "Microsoft Corporation",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "@polka/url",
+ "version": "1.0.0-next.24",
+ "author": "Luke Edwards",
+ "license": "MIT"
+ },
+ {
+ "name": "@rolldown/binding-linux-x64-gnu",
+ "version": "1.1.5",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@rolldown/pluginutils",
+ "version": "1.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@sindresorhus/is",
+ "version": "4.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "@standard-schema/spec",
+ "version": "1.1.0",
+ "author": "Colin McDonnell",
+ "license": "MIT"
+ },
+ {
+ "name": "@szmarczak/http-timer",
+ "version": "4.0.5",
+ "author": "Szymon Marczak",
+ "license": "MIT"
+ },
+ {
+ "name": "@tailwindcss/forms",
+ "version": "0.5.11",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@tailwindcss/node",
+ "version": "4.3.3",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@tailwindcss/oxide",
+ "version": "4.3.3",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@tailwindcss/oxide-linux-x64-gnu",
+ "version": "4.3.3",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@tailwindcss/vite",
+ "version": "4.3.3",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@tanstack/virtual-core",
+ "version": "3.17.6",
+ "author": "Tanner Linsley",
+ "license": "MIT"
+ },
+ {
+ "name": "@tanstack/vue-virtual",
+ "version": "3.13.34",
+ "author": "Tanner Linsley",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/cacheable-request",
+ "version": "6.0.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/chai",
+ "version": "5.2.3",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/debug",
+ "version": "4.1.6",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/deep-eql",
+ "version": "4.0.2",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/estree",
+ "version": "1.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/fs-extra",
+ "version": "9.0.13",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/hammerjs",
+ "version": "2.0.46",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/http-cache-semantics",
+ "version": "4.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/json-schema",
+ "version": "7.0.15",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/keyv",
+ "version": "3.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/node",
+ "version": "0.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/rbush",
+ "version": "4.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/responselike",
+ "version": "1.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@types/trusted-types",
+ "version": "2.0.7",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitejs/plugin-vue",
+ "version": "6.0.8",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/coverage-v8",
+ "version": "4.1.10",
+ "author": "Anthony Fu",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/expect",
+ "version": "4.1.10",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/mocker",
+ "version": "4.1.10",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/pretty-format",
+ "version": "4.1.10",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/runner",
+ "version": "4.1.10",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/snapshot",
+ "version": "4.1.10",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/spy",
+ "version": "4.1.10",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/ui",
+ "version": "4.1.10",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vitest/utils",
+ "version": "4.1.10",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@volar/language-core",
+ "version": "2.4.28",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@volar/source-map",
+ "version": "2.4.28",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@volar/typescript",
+ "version": "2.4.28",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/compiler-core",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/compiler-dom",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/compiler-sfc",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/compiler-ssr",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/devtools-api",
+ "version": "6.5.0",
+ "author": "Guillaume Chau",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/language-core",
+ "version": "3.3.7",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/reactivity",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/runtime-core",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/runtime-dom",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/server-renderer",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/shared",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "@vue/test-utils",
+ "version": "2.4.11",
+ "author": "Lachlan Miller",
+ "license": "MIT"
+ },
+ {
+ "name": "@vuetify/loader-shared",
+ "version": "2.1.2",
+ "author": "Kael Watts-Deuchar",
+ "license": "MIT"
+ },
+ {
+ "name": "@zarrita/storage",
+ "version": "0.2.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "abbrev",
+ "version": "4.0.0",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "abbrev",
+ "version": "1.0.3",
+ "author": "Isaac Z. Schlueter",
+ "license": "Unknown"
+ },
+ {
+ "name": "acorn",
+ "version": "0.11.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "acorn-jsx",
+ "version": "5.3.2",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "agent-base",
+ "version": "7.0.2",
+ "author": "Nathan Rajlich",
+ "license": "MIT"
+ },
+ {
+ "name": "ajv",
+ "version": "6.14.0",
+ "author": "Evgeny Poberezkin",
+ "license": "MIT"
+ },
+ {
+ "name": "alien-signals",
+ "version": "3.2.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "amdefine",
+ "version": "1.0.1",
+ "author": "James Burke",
+ "license": "BSD-3-Clause OR MIT"
+ },
+ {
+ "name": "ansi-regex",
+ "version": "5.0.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "ansi-styles",
+ "version": "4.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "app-builder-lib",
+ "version": "26.15.3",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "argparse",
+ "version": "2.0.1",
+ "author": "—",
+ "license": "Python-2.0"
+ },
+ {
+ "name": "asn1js",
+ "version": "3.0.10",
+ "author": "Yury Strozhevsky",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "assertion-error",
+ "version": "2.0.1",
+ "author": "Jake Luer",
+ "license": "MIT"
+ },
+ {
+ "name": "ast-types",
+ "version": "0.6.12",
+ "author": "Ben Newman",
+ "license": "MIT"
+ },
+ {
+ "name": "ast-v8-to-istanbul",
+ "version": "1.0.0",
+ "author": "Ari Perkkiö",
+ "license": "MIT"
+ },
+ {
+ "name": "async",
+ "version": "3.2.3",
+ "author": "Caolan McMahon",
+ "license": "MIT"
+ },
+ {
+ "name": "async-exit-hook",
+ "version": "2.0.1",
+ "author": "Tapani Moilanen",
+ "license": "MIT"
+ },
+ {
+ "name": "asynckit",
+ "version": "0.4.0",
+ "author": "Alex Indigo",
+ "license": "MIT"
+ },
+ {
+ "name": "at-least-node",
+ "version": "1.0.0",
+ "author": "Ryan Zimmerman",
+ "license": "ISC"
+ },
+ {
+ "name": "aws4",
+ "version": "1.13.2",
+ "author": "Michael Hart",
+ "license": "MIT"
+ },
+ {
+ "name": "balanced-match",
+ "version": "1.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "base64-js",
+ "version": "1.5.1",
+ "author": "T. Jameson Little",
+ "license": "MIT"
+ },
+ {
+ "name": "bidi-js",
+ "version": "1.0.3",
+ "author": "Jason Johnston",
+ "license": "MIT"
+ },
+ {
+ "name": "bluebird",
+ "version": "3.7.2",
+ "author": "Petka Antonov",
+ "license": "MIT"
+ },
+ {
+ "name": "blueimp-canvas-to-blob",
+ "version": "3.29.0",
+ "author": "Sebastian Tschan",
+ "license": "MIT"
+ },
+ {
+ "name": "boolbase",
+ "version": "1.0.0",
+ "author": "Felix Boehm",
+ "license": "ISC"
+ },
+ {
+ "name": "boolean",
+ "version": "3.0.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "brace-expansion",
+ "version": "1.1.12",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "buffer-from",
+ "version": "1.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "builder-util",
+ "version": "26.15.3",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "builder-util-runtime",
+ "version": "9.7.0",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "bytestreamjs",
+ "version": "2.0.1",
+ "author": "Yury Strozhevsky",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "cacache",
+ "version": "20.0.4",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "cacheable-lookup",
+ "version": "5.0.3",
+ "author": "Szymon Marczak",
+ "license": "MIT"
+ },
+ {
+ "name": "cacheable-request",
+ "version": "7.0.2",
+ "author": "Luke Childs",
+ "license": "MIT"
+ },
+ {
+ "name": "call-bind-apply-helpers",
+ "version": "1.0.1",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "callsites",
+ "version": "3.1.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "chai",
+ "version": "6.2.2",
+ "author": "Jake Luer",
+ "license": "MIT"
+ },
+ {
+ "name": "chalk",
+ "version": "4.1.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "chownr",
+ "version": "3.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "chromium-pickle-js",
+ "version": "0.2.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "ci-info",
+ "version": "4.2.0",
+ "author": "Thomas Watson Steen",
+ "license": "MIT"
+ },
+ {
+ "name": "cli-table3",
+ "version": "0.5.0",
+ "author": "James Talmage",
+ "license": "MIT"
+ },
+ {
+ "name": "cliui",
+ "version": "4.0.0",
+ "author": "Ben Coe",
+ "license": "ISC"
+ },
+ {
+ "name": "clone-response",
+ "version": "1.0.2",
+ "author": "Luke Childs",
+ "license": "MIT"
+ },
+ {
+ "name": "code-point-at",
+ "version": "1.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "color-convert",
+ "version": "2.0.0",
+ "author": "Heather Arthur",
+ "license": "MIT"
+ },
+ {
+ "name": "color-name",
+ "version": "1.1.4",
+ "author": "DY",
+ "license": "MIT"
+ },
+ {
+ "name": "colors",
+ "version": "1.1.2",
+ "author": "Marak Squires",
+ "license": "MIT"
+ },
+ {
+ "name": "combined-stream",
+ "version": "1.0.8",
+ "author": "Felix Geisendörfer",
+ "license": "MIT"
+ },
+ {
+ "name": "commander",
+ "version": "2.20.0",
+ "author": "TJ Holowaychuk",
+ "license": "MIT"
+ },
+ {
+ "name": "compare-version",
+ "version": "0.1.2",
+ "author": "Kevin Mårtensson",
+ "license": "MIT"
+ },
+ {
+ "name": "component-emitter",
+ "version": "2.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "compressorjs",
+ "version": "1.3.0",
+ "author": "Chen Fengyuan",
+ "license": "MIT"
+ },
+ {
+ "name": "concat-map",
+ "version": "0.0.1",
+ "author": "James Halliday",
+ "license": "MIT"
+ },
+ {
+ "name": "config-chain",
+ "version": "1.1.13",
+ "author": "Dominic Tarr",
+ "license": "MIT"
+ },
+ {
+ "name": "convert-source-map",
+ "version": "2.0.0",
+ "author": "Thorsten Lorenz",
+ "license": "MIT"
+ },
+ {
+ "name": "core-util-is",
+ "version": "1.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "MIT"
+ },
+ {
+ "name": "cross-dirname",
+ "version": "0.1.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "cross-env",
+ "version": "10.1.0",
+ "author": "Kent C. Dodds",
+ "license": "MIT"
+ },
+ {
+ "name": "cross-spawn",
+ "version": "7.0.5",
+ "author": "André Cruz",
+ "license": "MIT"
+ },
+ {
+ "name": "css-tree",
+ "version": "3.2.1",
+ "author": "Roman Dvornov",
+ "license": "MIT"
+ },
+ {
+ "name": "cssesc",
+ "version": "3.0.0",
+ "author": "Mathias Bynens",
+ "license": "MIT"
+ },
+ {
+ "name": "csstype",
+ "version": "3.2.3",
+ "author": "Fredrik Nicol",
+ "license": "MIT"
+ },
+ {
+ "name": "data-urls",
+ "version": "7.0.0",
+ "author": "Domenic Denicola",
+ "license": "MIT"
+ },
+ {
+ "name": "dayjs",
+ "version": "1.11.21",
+ "author": "iamkun",
+ "license": "MIT"
+ },
+ {
+ "name": "debug",
+ "version": "4.3.1",
+ "author": "Josh Junon",
+ "license": "MIT"
+ },
+ {
+ "name": "decamelize",
+ "version": "1.2.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "decimal.js",
+ "version": "10.6.0",
+ "author": "Michael Mclaughlin",
+ "license": "MIT"
+ },
+ {
+ "name": "decompress-response",
+ "version": "6.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "deep-is",
+ "version": "0.1.4",
+ "author": "Thorsten Lorenz",
+ "license": "MIT"
+ },
+ {
+ "name": "defer-to-connect",
+ "version": "2.0.0",
+ "author": "Szymon Marczak",
+ "license": "MIT"
+ },
+ {
+ "name": "define-properties",
+ "version": "1.1.2",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "delayed-stream",
+ "version": "1.0.0",
+ "author": "Felix Geisendörfer",
+ "license": "MIT"
+ },
+ {
+ "name": "detect-libc",
+ "version": "2.0.3",
+ "author": "Lovell Fuller",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "detect-node",
+ "version": "2.0.4",
+ "author": "Ilya Kantor",
+ "license": "ISC"
+ },
+ {
+ "name": "dijkstrajs",
+ "version": "1.0.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "dir-compare",
+ "version": "4.2.0",
+ "author": "Liviu Grigorescu",
+ "license": "MIT"
+ },
+ {
+ "name": "dmg-builder",
+ "version": "26.15.3",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "dompurify",
+ "version": "3.4.12",
+ "author": "Dr.-Ing. Mario Heiderich, Cure53",
+ "license": "(MPL-2.0 OR Apache-2.0)"
+ },
+ {
+ "name": "dotenv",
+ "version": "16.6.1",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "dotenv-expand",
+ "version": "11.0.6",
+ "author": "motdotla",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "dunder-proto",
+ "version": "1.0.0",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "duplexer2",
+ "version": "0.1.4",
+ "author": "Conrad Pankoff",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "earcut",
+ "version": "3.0.0",
+ "author": "Vladimir Agafonkin",
+ "license": "ISC"
+ },
+ {
+ "name": "eastasianwidth",
+ "version": "0.2.0",
+ "author": "Masaki Komagata",
+ "license": "MIT"
+ },
+ {
+ "name": "editorconfig",
+ "version": "1.0.3",
+ "author": "EditorConfig Team",
+ "license": "MIT"
+ },
+ {
+ "name": "ejs",
+ "version": "3.1.10",
+ "author": "Matthew Eernisse",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "electron",
+ "version": "42.4.0",
+ "author": "Electron Community",
+ "license": "MIT"
+ },
+ {
+ "name": "electron-builder",
+ "version": "26.15.3",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "electron-builder-squirrel-windows",
+ "version": "26.15.3",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "electron-prompt",
+ "version": "1.7.0",
+ "author": "p-sam",
+ "license": "MIT"
+ },
+ {
+ "name": "electron-publish",
+ "version": "26.15.3",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "electron-winstaller",
+ "version": "5.4.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "emoji-picker-element",
+ "version": "1.29.1",
+ "author": "Nolan Lawson",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "emoji-picker-element-data",
+ "version": "1.8.0",
+ "author": "Nolan Lawson",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "emoji-regex",
+ "version": "8.0.0",
+ "author": "Mathias Bynens",
+ "license": "MIT"
+ },
+ {
+ "name": "end-of-stream",
+ "version": "1.1.0",
+ "author": "Mathias Buus",
+ "license": "MIT"
+ },
+ {
+ "name": "enhanced-resolve",
+ "version": "5.24.1",
+ "author": "Tobias Koppers @sokra",
+ "license": "MIT"
+ },
+ {
+ "name": "entities",
+ "version": "7.0.1",
+ "author": "Felix Boehm",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "env-paths",
+ "version": "2.2.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "err-code",
+ "version": "2.0.2",
+ "author": "IndigoUnited",
+ "license": "MIT"
+ },
+ {
+ "name": "es-abstract",
+ "version": "1.5.0",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "es-define-property",
+ "version": "1.0.1",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "es-errors",
+ "version": "1.3.0",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "es-module-lexer",
+ "version": "2.0.0",
+ "author": "Guy Bedford",
+ "license": "MIT"
+ },
+ {
+ "name": "es-object-atoms",
+ "version": "1.0.0",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "es-set-tostringtag",
+ "version": "2.1.0",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "es-to-primitive",
+ "version": "1.1.0",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "es6-error",
+ "version": "4.1.1",
+ "author": "Ben Youngblood",
+ "license": "MIT"
+ },
+ {
+ "name": "escalade",
+ "version": "3.1.1",
+ "author": "Luke Edwards",
+ "license": "MIT"
+ },
+ {
+ "name": "escape-string-regexp",
+ "version": "4.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "eslint",
+ "version": "9.39.5",
+ "author": "Nicholas C. Zakas",
+ "license": "MIT"
+ },
+ {
+ "name": "eslint-config-prettier",
+ "version": "10.1.8",
+ "author": "Simon Lydell",
+ "license": "MIT"
+ },
+ {
+ "name": "eslint-plugin-prettier",
+ "version": "5.5.6",
+ "author": "Teddy Katz",
+ "license": "MIT"
+ },
+ {
+ "name": "eslint-plugin-security",
+ "version": "3.0.1",
+ "author": "Node Security Project",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "eslint-plugin-vue",
+ "version": "10.10.0",
+ "author": "Toru Nagashima",
+ "license": "MIT"
+ },
+ {
+ "name": "eslint-scope",
+ "version": "8.2.0",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "eslint-visitor-keys",
+ "version": "3.4.3",
+ "author": "Toru Nagashima",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "esmangle-evaluator",
+ "version": "1.0.0",
+ "author": "Andres Suarez",
+ "license": "Unknown"
+ },
+ {
+ "name": "espree",
+ "version": "10.3.0",
+ "author": "Nicholas C. Zakas",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "esprima-fb",
+ "version": "12001.1.0-dev-harmony-fb",
+ "author": "Ariya Hidayat",
+ "license": "BSD"
+ },
+ {
+ "name": "esquery",
+ "version": "1.6.0",
+ "author": "Joel Feenstra",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "esrecurse",
+ "version": "4.3.0",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "estraverse",
+ "version": "5.1.0",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "estree-walker",
+ "version": "2.0.2",
+ "author": "Rich Harris",
+ "license": "MIT"
+ },
+ {
+ "name": "esutils",
+ "version": "2.0.3",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "execa",
+ "version": "0.10.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "expect-type",
+ "version": "1.3.0",
+ "author": "—",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "exponential-backoff",
+ "version": "3.1.1",
+ "author": "Sami Sayegh",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "fake-indexeddb",
+ "version": "6.2.5",
+ "author": "Jeremy Scheff",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "falafel",
+ "version": "1.0.1",
+ "author": "James Halliday",
+ "license": "MIT"
+ },
+ {
+ "name": "fast-deep-equal",
+ "version": "3.1.3",
+ "author": "Evgeny Poberezkin",
+ "license": "MIT"
+ },
+ {
+ "name": "fast-diff",
+ "version": "1.1.2",
+ "author": "Jason Chen",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "fast-json-stable-stringify",
+ "version": "2.1.0",
+ "author": "James Halliday",
+ "license": "MIT"
+ },
+ {
+ "name": "fast-levenshtein",
+ "version": "2.0.6",
+ "author": "Ramesh Nair",
+ "license": "MIT"
+ },
+ {
+ "name": "fast-uri",
+ "version": "4.1.1",
+ "author": "Vincent Le Goff",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "fd-package-json",
+ "version": "2.0.0",
+ "author": "James Garbutt",
+ "license": "MIT"
+ },
+ {
+ "name": "fdir",
+ "version": "6.4.3",
+ "author": "thecodrr",
+ "license": "MIT"
+ },
+ {
+ "name": "fflate",
+ "version": "0.8.0",
+ "author": "Arjun Barrett",
+ "license": "MIT"
+ },
+ {
+ "name": "file-entry-cache",
+ "version": "8.0.0",
+ "author": "Jared Wray",
+ "license": "MIT"
+ },
+ {
+ "name": "filelist",
+ "version": "1.0.1",
+ "author": "Matthew Eernisse",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "find-up",
+ "version": "3.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "flat-cache",
+ "version": "4.0.1",
+ "author": "Jared Wray",
+ "license": "MIT"
+ },
+ {
+ "name": "flatted",
+ "version": "3.4.2",
+ "author": "Andrea Giammarchi",
+ "license": "ISC"
+ },
+ {
+ "name": "for-each",
+ "version": "0.3.3",
+ "author": "Raynos",
+ "license": "MIT"
+ },
+ {
+ "name": "foreach",
+ "version": "2.0.6",
+ "author": "Manuel Stofer",
+ "license": "MIT"
+ },
+ {
+ "name": "foreground-child",
+ "version": "3.1.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "form-data",
+ "version": "4.0.6",
+ "author": "Felix Geisendörfer",
+ "license": "MIT"
+ },
+ {
+ "name": "formatly",
+ "version": "0.3.0",
+ "author": "Josh Goldberg ✨",
+ "license": "MIT"
+ },
+ {
+ "name": "fs-extra",
+ "version": "7.0.1",
+ "author": "JP Richardson",
+ "license": "MIT"
+ },
+ {
+ "name": "fs-minipass",
+ "version": "3.0.3",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "fs.realpath",
+ "version": "1.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "function-bind",
+ "version": "1.0.2",
+ "author": "Raynos",
+ "license": "MIT"
+ },
+ {
+ "name": "geotiff",
+ "version": "3.0.5",
+ "author": "Fabian Schindler",
+ "license": "MIT"
+ },
+ {
+ "name": "get-caller-file",
+ "version": "1.0.1",
+ "author": "Stefan Penner",
+ "license": "ISC"
+ },
+ {
+ "name": "get-intrinsic",
+ "version": "1.2.6",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "get-stream",
+ "version": "3.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "get-tsconfig",
+ "version": "4.14.0",
+ "author": "Hiroki Osame",
+ "license": "MIT"
+ },
+ {
+ "name": "glob",
+ "version": "7.2.3",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "glob-parent",
+ "version": "6.0.2",
+ "author": "Gulp Team",
+ "license": "ISC"
+ },
+ {
+ "name": "global-agent",
+ "version": "3.0.0",
+ "author": "Gajus Kuizinas",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "globals",
+ "version": "14.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "globalthis",
+ "version": "1.0.1",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "gopd",
+ "version": "1.2.0",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "got",
+ "version": "11.8.6",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "graceful-fs",
+ "version": "4.1.2",
+ "author": "—",
+ "license": "ISC"
+ },
+ {
+ "name": "has-flag",
+ "version": "4.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "has-symbols",
+ "version": "1.0.3",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "has-tostringtag",
+ "version": "1.0.2",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "hasown",
+ "version": "2.0.4",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "hosted-git-info",
+ "version": "2.8.9",
+ "author": "Rebecca Turner",
+ "license": "ISC"
+ },
+ {
+ "name": "html-encoding-sniffer",
+ "version": "6.0.0",
+ "author": "Domenic Denicola",
+ "license": "MIT"
+ },
+ {
+ "name": "html-escaper",
+ "version": "2.0.0",
+ "author": "Andrea Giammarchi",
+ "license": "MIT"
+ },
+ {
+ "name": "http-cache-semantics",
+ "version": "4.1.1",
+ "author": "Kornel Lesiński",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "http-proxy-agent",
+ "version": "7.0.0",
+ "author": "Nathan Rajlich",
+ "license": "MIT"
+ },
+ {
+ "name": "http2-wrapper",
+ "version": "1.0.0-beta.5.2",
+ "author": "Szymon Marczak",
+ "license": "MIT"
+ },
+ {
+ "name": "https-proxy-agent",
+ "version": "7.0.0",
+ "author": "Nathan Rajlich",
+ "license": "MIT"
+ },
+ {
+ "name": "iconv-lite",
+ "version": "0.7.2",
+ "author": "Alexander Shtuchkin",
+ "license": "MIT"
+ },
+ {
+ "name": "ignore",
+ "version": "5.3.2",
+ "author": "kael",
+ "license": "MIT"
+ },
+ {
+ "name": "immediate",
+ "version": "3.0.5",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "import-fresh",
+ "version": "3.3.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "imurmurhash",
+ "version": "0.1.4",
+ "author": "Jens Taylor",
+ "license": "MIT"
+ },
+ {
+ "name": "inflight",
+ "version": "1.0.4",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "inherits",
+ "version": "2.0.1",
+ "author": "—",
+ "license": "ISC"
+ },
+ {
+ "name": "inherits",
+ "version": "2.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "WTFPL2"
+ },
+ {
+ "name": "ini",
+ "version": "1.3.6",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "inline-process-browser",
+ "version": "1.0.0",
+ "author": "Calvin W. Metcalf",
+ "license": "MIT"
+ },
+ {
+ "name": "invert-kv",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "ip-address",
+ "version": "9.0.5",
+ "author": "Beau Gunderson",
+ "license": "MIT"
+ },
+ {
+ "name": "is-blob",
+ "version": "2.1.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "is-callable",
+ "version": "1.1.1",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "is-date-object",
+ "version": "1.0.1",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "is-extglob",
+ "version": "2.1.1",
+ "author": "Jon Schlinkert",
+ "license": "MIT"
+ },
+ {
+ "name": "is-fullwidth-code-point",
+ "version": "1.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "is-glob",
+ "version": "4.0.3",
+ "author": "Jon Schlinkert",
+ "license": "MIT"
+ },
+ {
+ "name": "is-potential-custom-element-name",
+ "version": "1.0.1",
+ "author": "Mathias Bynens",
+ "license": "MIT"
+ },
+ {
+ "name": "is-regex",
+ "version": "1.0.3",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "is-stream",
+ "version": "1.1.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "is-symbol",
+ "version": "1.0.1",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "isarray",
+ "version": "0.0.1",
+ "author": "Julian Gruber",
+ "license": "MIT"
+ },
+ {
+ "name": "isbinaryfile",
+ "version": "4.0.8",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "isexe",
+ "version": "2.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "isexe",
+ "version": "3.1.5",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "istanbul-lib-coverage",
+ "version": "3.2.2",
+ "author": "Krishnan Anantheswaran",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "istanbul-lib-report",
+ "version": "3.0.1",
+ "author": "Krishnan Anantheswaran",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "istanbul-reports",
+ "version": "3.2.0",
+ "author": "Krishnan Anantheswaran",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "jackspeak",
+ "version": "3.1.2",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "jake",
+ "version": "10.8.5",
+ "author": "Matthew Eernisse",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "jiti",
+ "version": "2.4.2",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "js-beautify",
+ "version": "1.14.9",
+ "author": "Einar Lielmanis",
+ "license": "MIT"
+ },
+ {
+ "name": "js-tokens",
+ "version": "10.0.0",
+ "author": "Simon Lydell",
+ "license": "MIT"
+ },
+ {
+ "name": "js-yaml",
+ "version": "4.2.0",
+ "author": "Vladimir Zapparov",
+ "license": "MIT"
+ },
+ {
+ "name": "jsbn",
+ "version": "1.1.0",
+ "author": "Tom Wu",
+ "license": "MIT"
+ },
+ {
+ "name": "jsdom",
+ "version": "29.1.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "json-buffer",
+ "version": "3.0.1",
+ "author": "Dominic Tarr",
+ "license": "MIT"
+ },
+ {
+ "name": "json-schema-traverse",
+ "version": "0.4.1",
+ "author": "Evgeny Poberezkin",
+ "license": "MIT"
+ },
+ {
+ "name": "json-stable-stringify-without-jsonify",
+ "version": "1.0.1",
+ "author": "James Halliday",
+ "license": "MIT"
+ },
+ {
+ "name": "json-stringify-pretty-compact",
+ "version": "4.0.0",
+ "author": "Simon Lydell",
+ "license": "MIT"
+ },
+ {
+ "name": "json-stringify-safe",
+ "version": "5.0.1",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "json5",
+ "version": "2.2.3",
+ "author": "Aseem Kishore",
+ "license": "MIT"
+ },
+ {
+ "name": "jsonfile",
+ "version": "4.0.0",
+ "author": "JP Richardson",
+ "license": "MIT"
+ },
+ {
+ "name": "jsqr",
+ "version": "1.4.0",
+ "author": "—",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "jszip",
+ "version": "3.10.1",
+ "author": "Stuart Knightley",
+ "license": "(MIT OR GPL-3.0-or-later)"
+ },
+ {
+ "name": "keycharm",
+ "version": "0.4.0",
+ "author": "Alex de Mulder",
+ "license": "(Apache-2.0 OR MIT)"
+ },
+ {
+ "name": "keyv",
+ "version": "4.0.0",
+ "author": "Jared Wray",
+ "license": "MIT"
+ },
+ {
+ "name": "knip",
+ "version": "6.29.0",
+ "author": "Lars Kappert",
+ "license": "ISC"
+ },
+ {
+ "name": "lazy-val",
+ "version": "1.0.5",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "lcid",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "lerc",
+ "version": "3.0.0",
+ "author": "Esri",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "levn",
+ "version": "0.4.1",
+ "author": "George Zahariev",
+ "license": "MIT"
+ },
+ {
+ "name": "lie",
+ "version": "3.3.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "lightningcss",
+ "version": "1.32.0",
+ "author": "—",
+ "license": "MPL-2.0"
+ },
+ {
+ "name": "lightningcss-linux-x64-gnu",
+ "version": "1.32.0",
+ "author": "—",
+ "license": "MPL-2.0"
+ },
+ {
+ "name": "locate-path",
+ "version": "3.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "lodash",
+ "version": "4.18.0",
+ "author": "John-David Dalton",
+ "license": "MIT"
+ },
+ {
+ "name": "lodash.merge",
+ "version": "4.6.2",
+ "author": "John-David Dalton",
+ "license": "MIT"
+ },
+ {
+ "name": "lowercase-keys",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "lru-cache",
+ "version": "6.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "lru-cache",
+ "version": "11.3.5",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "magic-string",
+ "version": "0.30.21",
+ "author": "Rich Harris",
+ "license": "MIT"
+ },
+ {
+ "name": "magicast",
+ "version": "0.5.2",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "make-dir",
+ "version": "4.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "make-fetch-happen",
+ "version": "15.0.6",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "mapbox-to-css-font",
+ "version": "3.2.0",
+ "author": "Andreas Hocevar",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "marked",
+ "version": "18.0.7",
+ "author": "Christopher Jeffrey",
+ "license": "MIT"
+ },
+ {
+ "name": "matcher",
+ "version": "3.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "math-intrinsics",
+ "version": "1.0.0",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "mdn-data",
+ "version": "2.27.1",
+ "author": "Mozilla Developer Network",
+ "license": "CC0-1.0"
+ },
+ {
+ "name": "mem",
+ "version": "3.0.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "micron-parser",
+ "version": "0.0.0",
+ "author": "—",
+ "license": "Unknown"
+ },
+ {
+ "name": "mime",
+ "version": "2.5.2",
+ "author": "Robert Kieffer",
+ "license": "MIT"
+ },
+ {
+ "name": "mime-db",
+ "version": "1.52.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "mime-types",
+ "version": "2.1.35",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "mimic-fn",
+ "version": "1.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "mimic-response",
+ "version": "1.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "mini-svg-data-uri",
+ "version": "1.2.3",
+ "author": "Taylor “Tigt” Hunt",
+ "license": "MIT"
+ },
+ {
+ "name": "minimatch",
+ "version": "3.1.4",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "minimatch",
+ "version": "10.2.3",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "minimist",
+ "version": "1.2.8",
+ "author": "James Halliday",
+ "license": "MIT"
+ },
+ {
+ "name": "minipass",
+ "version": "3.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "minipass-collect",
+ "version": "2.0.1",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "minipass-fetch",
+ "version": "5.0.2",
+ "author": "GitHub Inc.",
+ "license": "MIT"
+ },
+ {
+ "name": "minipass-flush",
+ "version": "1.0.7",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "minipass-pipeline",
+ "version": "1.2.4",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "minipass-sized",
+ "version": "2.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "minizlib",
+ "version": "3.0.1",
+ "author": "Isaac Z. Schlueter",
+ "license": "MIT"
+ },
+ {
+ "name": "mrmime",
+ "version": "2.0.0",
+ "author": "Luke Edwards",
+ "license": "MIT"
+ },
+ {
+ "name": "ms",
+ "version": "2.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "muggle-string",
+ "version": "0.4.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "nanoid",
+ "version": "3.3.12",
+ "author": "Andrey Sitnik",
+ "license": "MIT"
+ },
+ {
+ "name": "natural-compare",
+ "version": "1.4.0",
+ "author": "Lauri Rooden",
+ "license": "MIT"
+ },
+ {
+ "name": "negotiator",
+ "version": "1.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "node-abi",
+ "version": "4.2.0",
+ "author": "Lukas Geiger",
+ "license": "MIT"
+ },
+ {
+ "name": "node-api-version",
+ "version": "0.2.1",
+ "author": "Tim Fish",
+ "license": "MIT"
+ },
+ {
+ "name": "node-gyp",
+ "version": "12.2.0",
+ "author": "Nathan Rajlich",
+ "license": "MIT"
+ },
+ {
+ "name": "node-int64",
+ "version": "0.4.0",
+ "author": "Robert Kieffer",
+ "license": "MIT"
+ },
+ {
+ "name": "nopt",
+ "version": "6.0.0",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "normalize-url",
+ "version": "6.0.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "npm-run-path",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "nth-check",
+ "version": "2.1.1",
+ "author": "Felix Boehm",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "number-is-nan",
+ "version": "1.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "numcodecs",
+ "version": "0.3.2",
+ "author": "Trevor Manz",
+ "license": "MIT"
+ },
+ {
+ "name": "object-assign",
+ "version": "4.1.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "object-keys",
+ "version": "1.0.8",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "obug",
+ "version": "2.1.1",
+ "author": "Kevin Deng",
+ "license": "MIT"
+ },
+ {
+ "name": "ol",
+ "version": "10.9.0",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "ol-mapbox-style",
+ "version": "13.4.1",
+ "author": "—",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "once",
+ "version": "1.3.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "BSD"
+ },
+ {
+ "name": "optionator",
+ "version": "0.9.4",
+ "author": "George Zahariev",
+ "license": "MIT"
+ },
+ {
+ "name": "os-locale",
+ "version": "3.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "oxc-parser",
+ "version": "0.140.0",
+ "author": "Boshen and oxc contributors",
+ "license": "MIT"
+ },
+ {
+ "name": "oxc-resolver",
+ "version": "11.24.2",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "p-cancelable",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "p-finally",
+ "version": "1.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "p-is-promise",
+ "version": "1.1.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "p-limit",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "p-locate",
+ "version": "3.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "p-map",
+ "version": "7.0.6",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "p-try",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "package-json-from-dist",
+ "version": "1.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "pako",
+ "version": "1.0.2",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "pako",
+ "version": "2.0.4",
+ "author": "—",
+ "license": "(MIT AND Zlib)"
+ },
+ {
+ "name": "parent-module",
+ "version": "1.0.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "parse-headers",
+ "version": "2.0.2",
+ "author": "David Björklund",
+ "license": "MIT"
+ },
+ {
+ "name": "parse5",
+ "version": "8.0.1",
+ "author": "Ivan Nikulin",
+ "license": "MIT"
+ },
+ {
+ "name": "path-browserify",
+ "version": "1.0.1",
+ "author": "James Halliday",
+ "license": "MIT"
+ },
+ {
+ "name": "path-exists",
+ "version": "3.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "path-is-absolute",
+ "version": "1.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "path-key",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "path-scurry",
+ "version": "1.11.1",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "pathe",
+ "version": "2.0.3",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "pbf",
+ "version": "4.0.1",
+ "author": "Konstantin Kaefer",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "pe-library",
+ "version": "0.4.0",
+ "author": "jet",
+ "license": "MIT"
+ },
+ {
+ "name": "picocolors",
+ "version": "1.1.1",
+ "author": "Alexey Raspopov",
+ "license": "ISC"
+ },
+ {
+ "name": "picomatch",
+ "version": "4.0.4",
+ "author": "Jon Schlinkert",
+ "license": "MIT"
+ },
+ {
+ "name": "pkijs",
+ "version": "3.4.0",
+ "author": "Yury Strozhevsky",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "playwright",
+ "version": "1.61.1",
+ "author": "Microsoft Corporation",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "playwright-core",
+ "version": "1.61.1",
+ "author": "Microsoft Corporation",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "plist",
+ "version": "3.0.5",
+ "author": "Nathan Rajlich",
+ "license": "MIT"
+ },
+ {
+ "name": "pngjs",
+ "version": "5.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "postcss",
+ "version": "8.5.19",
+ "author": "Andrey Sitnik",
+ "license": "MIT"
+ },
+ {
+ "name": "postcss-selector-parser",
+ "version": "7.1.4",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "postject",
+ "version": "1.0.0-alpha.6",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "prelude-ls",
+ "version": "1.2.1",
+ "author": "George Zahariev",
+ "license": "MIT"
+ },
+ {
+ "name": "prettier",
+ "version": "3.9.6",
+ "author": "James Long",
+ "license": "MIT"
+ },
+ {
+ "name": "prettier-linter-helpers",
+ "version": "1.0.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "private",
+ "version": "0.1.5",
+ "author": "Ben Newman",
+ "license": "MIT"
+ },
+ {
+ "name": "proc-log",
+ "version": "6.0.0",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "process-nextick-args",
+ "version": "1.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "progress",
+ "version": "2.0.3",
+ "author": "TJ Holowaychuk",
+ "license": "MIT"
+ },
+ {
+ "name": "promise-retry",
+ "version": "2.0.1",
+ "author": "IndigoUnited",
+ "license": "MIT"
+ },
+ {
+ "name": "proper-lockfile",
+ "version": "4.1.2",
+ "author": "André Cruz",
+ "license": "MIT"
+ },
+ {
+ "name": "proto-list",
+ "version": "1.2.1",
+ "author": "Isaac Z. Schlueter",
+ "license": "MIT"
+ },
+ {
+ "name": "protocol-buffers-schema",
+ "version": "3.6.1",
+ "author": "Mathias Buus",
+ "license": "MIT"
+ },
+ {
+ "name": "pump",
+ "version": "3.0.0",
+ "author": "Mathias Buus Madsen",
+ "license": "MIT"
+ },
+ {
+ "name": "punycode",
+ "version": "2.3.1",
+ "author": "Mathias Bynens",
+ "license": "MIT"
+ },
+ {
+ "name": "pvtsutils",
+ "version": "1.3.6",
+ "author": "PeculiarVentures",
+ "license": "MIT"
+ },
+ {
+ "name": "pvutils",
+ "version": "1.1.3",
+ "author": "Yury Strozhevsky",
+ "license": "MIT"
+ },
+ {
+ "name": "qrcode",
+ "version": "1.5.4",
+ "author": "Ryan Day",
+ "license": "MIT"
+ },
+ {
+ "name": "quick-lru",
+ "version": "5.1.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "quickselect",
+ "version": "2.0.0",
+ "author": "Vladimir Agafonkin",
+ "license": "ISC"
+ },
+ {
+ "name": "rbush",
+ "version": "4.0.0",
+ "author": "Volodymyr Agafonkin",
+ "license": "MIT"
+ },
+ {
+ "name": "read-binary-file-arch",
+ "version": "1.0.6",
+ "author": "Samuel Maddock",
+ "license": "MIT"
+ },
+ {
+ "name": "readable-stream",
+ "version": "1.0.31",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "recast",
+ "version": "0.10.1",
+ "author": "Ben Newman",
+ "license": "MIT"
+ },
+ {
+ "name": "reference-spec-reader",
+ "version": "0.2.0",
+ "author": "manzt",
+ "license": "MIT"
+ },
+ {
+ "name": "regexp-tree",
+ "version": "0.1.1",
+ "author": "Dmitry Soshnikov",
+ "license": "MIT"
+ },
+ {
+ "name": "require-directory",
+ "version": "2.1.1",
+ "author": "Troy Goode",
+ "license": "MIT"
+ },
+ {
+ "name": "require-from-string",
+ "version": "2.0.2",
+ "author": "Vsevolod Strukchinsky",
+ "license": "MIT"
+ },
+ {
+ "name": "require-main-filename",
+ "version": "1.0.1",
+ "author": "Ben Coe",
+ "license": "ISC"
+ },
+ {
+ "name": "resedit",
+ "version": "1.7.0",
+ "author": "jet",
+ "license": "MIT"
+ },
+ {
+ "name": "resolve-alpn",
+ "version": "1.0.0",
+ "author": "Szymon Marczak",
+ "license": "MIT"
+ },
+ {
+ "name": "resolve-from",
+ "version": "4.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "resolve-pkg-maps",
+ "version": "1.0.0",
+ "author": "Hiroki Osame",
+ "license": "MIT"
+ },
+ {
+ "name": "resolve-protobuf-schema",
+ "version": "2.1.0",
+ "author": "Mathias Buus",
+ "license": "MIT"
+ },
+ {
+ "name": "responselike",
+ "version": "2.0.0",
+ "author": "lukechilds",
+ "license": "MIT"
+ },
+ {
+ "name": "retry",
+ "version": "0.12.0",
+ "author": "Tim Koschützki",
+ "license": "MIT"
+ },
+ {
+ "name": "rimraf",
+ "version": "2.6.2",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "roarr",
+ "version": "2.15.3",
+ "author": "Gajus Kuizinas",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "rolldown",
+ "version": "1.1.5",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "rw",
+ "version": "1.3.3",
+ "author": "Mike Bostock",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "safe-buffer",
+ "version": "5.1.1",
+ "author": "Feross Aboukhadijeh",
+ "license": "MIT"
+ },
+ {
+ "name": "safe-regex",
+ "version": "2.1.1",
+ "author": "James C.",
+ "license": "MIT"
+ },
+ {
+ "name": "safer-buffer",
+ "version": "2.1.2",
+ "author": "Nikita Skovoroda",
+ "license": "MIT"
+ },
+ {
+ "name": "sanitize-filename",
+ "version": "1.6.3",
+ "author": "Parsha Pourkhomami",
+ "license": "WTFPL OR ISC"
+ },
+ {
+ "name": "sax",
+ "version": "1.2.4",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "saxes",
+ "version": "6.0.0",
+ "author": "Louis-Dominique Dubeau",
+ "license": "ISC"
+ },
+ {
+ "name": "semver",
+ "version": "7.5.2",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "semver-compare",
+ "version": "1.0.0",
+ "author": "James Halliday",
+ "license": "MIT"
+ },
+ {
+ "name": "serialize-error",
+ "version": "7.0.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "set-blocking",
+ "version": "2.0.0",
+ "author": "Ben Coe",
+ "license": "ISC"
+ },
+ {
+ "name": "setimmediate",
+ "version": "1.0.5",
+ "author": "YuzuJS",
+ "license": "MIT"
+ },
+ {
+ "name": "shebang-command",
+ "version": "2.0.0",
+ "author": "Kevin Mårtensson",
+ "license": "MIT"
+ },
+ {
+ "name": "shebang-regex",
+ "version": "3.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "siginfo",
+ "version": "2.0.0",
+ "author": "Emil Bay",
+ "license": "ISC"
+ },
+ {
+ "name": "signal-exit",
+ "version": "3.0.0",
+ "author": "Ben Coe",
+ "license": "ISC"
+ },
+ {
+ "name": "simple-update-notifier",
+ "version": "2.0.0",
+ "author": "alexbrazier",
+ "license": "MIT"
+ },
+ {
+ "name": "sirv",
+ "version": "3.0.2",
+ "author": "Luke Edwards",
+ "license": "MIT"
+ },
+ {
+ "name": "smart-buffer",
+ "version": "4.2.0",
+ "author": "Josh Glazebrook",
+ "license": "MIT"
+ },
+ {
+ "name": "smol-toml",
+ "version": "1.7.0",
+ "author": "Cynthia Rey",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "socks",
+ "version": "2.8.0",
+ "author": "Josh Glazebrook",
+ "license": "MIT"
+ },
+ {
+ "name": "socks-proxy-agent",
+ "version": "8.0.3",
+ "author": "Nathan Rajlich",
+ "license": "MIT"
+ },
+ {
+ "name": "source-map",
+ "version": "0.6.0",
+ "author": "Nick Fitzgerald",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "source-map",
+ "version": "0.3.0",
+ "author": "Nick Fitzgerald",
+ "license": "BSD"
+ },
+ {
+ "name": "source-map-js",
+ "version": "1.0.2",
+ "author": "Valentin 7rulnik Semirulnik",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "source-map-support",
+ "version": "0.5.19",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "sprintf-js",
+ "version": "1.1.2",
+ "author": "Alexandru Mărășteanu",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "ssri",
+ "version": "13.0.1",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "stackback",
+ "version": "0.0.2",
+ "author": "Roman Shtylman",
+ "license": "MIT"
+ },
+ {
+ "name": "stat-mode",
+ "version": "1.0.0",
+ "author": "Nathan Rajlich",
+ "license": "MIT"
+ },
+ {
+ "name": "std-env",
+ "version": "4.0.0-rc.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "string-width",
+ "version": "1.0.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "string.prototype.trim",
+ "version": "1.1.2",
+ "author": "Jordan Harband",
+ "license": "MIT"
+ },
+ {
+ "name": "string_decoder",
+ "version": "0.10.24",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "strip-eof",
+ "version": "1.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "strip-json-comments",
+ "version": "3.1.1",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "sumchecker",
+ "version": "3.0.1",
+ "author": "Mark Lee",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "supports-color",
+ "version": "7.1.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "symbol-tree",
+ "version": "3.2.4",
+ "author": "Joris van der Wel",
+ "license": "MIT"
+ },
+ {
+ "name": "synckit",
+ "version": "0.11.13",
+ "author": "JounQin",
+ "license": "MIT"
+ },
+ {
+ "name": "tailwindcss",
+ "version": "4.3.3",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "tapable",
+ "version": "2.3.3",
+ "author": "Tobias Koppers @sokra",
+ "license": "MIT"
+ },
+ {
+ "name": "tar",
+ "version": "7.5.21",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "temp",
+ "version": "0.9.0",
+ "author": "Bruce Williams",
+ "license": "MIT"
+ },
+ {
+ "name": "temp-file",
+ "version": "3.4.0",
+ "author": "Vladimir Krivosheev",
+ "license": "MIT"
+ },
+ {
+ "name": "terser",
+ "version": "5.49.0",
+ "author": "Mihai Bazon",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "through2",
+ "version": "0.6.2",
+ "author": "Rod Vagg",
+ "license": "MIT"
+ },
+ {
+ "name": "tiny-async-pool",
+ "version": "1.3.0",
+ "author": "Rafael Xavier de Souza",
+ "license": "MIT"
+ },
+ {
+ "name": "tinybench",
+ "version": "2.9.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "tinyexec",
+ "version": "1.0.2",
+ "author": "James Garbutt",
+ "license": "MIT"
+ },
+ {
+ "name": "tinyglobby",
+ "version": "0.2.12",
+ "author": "Superchupu",
+ "license": "MIT"
+ },
+ {
+ "name": "tinyqueue",
+ "version": "3.0.0",
+ "author": "—",
+ "license": "ISC"
+ },
+ {
+ "name": "tinyrainbow",
+ "version": "3.1.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "tldts",
+ "version": "7.0.5",
+ "author": "Rémi Berson",
+ "license": "MIT"
+ },
+ {
+ "name": "tldts-core",
+ "version": "7.0.5",
+ "author": "Rémi Berson",
+ "license": "MIT"
+ },
+ {
+ "name": "tmp",
+ "version": "0.2.7",
+ "author": "KARASZI István",
+ "license": "MIT"
+ },
+ {
+ "name": "tmp-promise",
+ "version": "3.0.2",
+ "author": "Benjamin Gruenbaum and Collaborators.",
+ "license": "MIT"
+ },
+ {
+ "name": "totalist",
+ "version": "3.0.0",
+ "author": "Luke Edwards",
+ "license": "MIT"
+ },
+ {
+ "name": "tough-cookie",
+ "version": "6.0.1",
+ "author": "Jeremy Stashewsky",
+ "license": "BSD-3-Clause"
+ },
+ {
+ "name": "tr46",
+ "version": "6.0.0",
+ "author": "Sebastian Mayr",
+ "license": "MIT"
+ },
+ {
+ "name": "truncate-utf8-bytes",
+ "version": "1.0.0",
+ "author": "Carl Xiong",
+ "license": "WTFPL"
+ },
+ {
+ "name": "tslib",
+ "version": "2.8.1",
+ "author": "Microsoft Corp.",
+ "license": "0BSD"
+ },
+ {
+ "name": "type-check",
+ "version": "0.4.0",
+ "author": "George Zahariev",
+ "license": "MIT"
+ },
+ {
+ "name": "type-fest",
+ "version": "0.13.1",
+ "author": "Sindre Sorhus",
+ "license": "(MIT OR CC0-1.0)"
+ },
+ {
+ "name": "typescript",
+ "version": "6.0.3",
+ "author": "Microsoft Corp.",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "unbash",
+ "version": "4.0.3",
+ "author": "Lars Kappert",
+ "license": "ISC"
+ },
+ {
+ "name": "undici",
+ "version": "7.28.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "undici-types",
+ "version": "7.16.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "universalify",
+ "version": "0.1.0",
+ "author": "Ryan Zimmerman",
+ "license": "MIT"
+ },
+ {
+ "name": "unreachable-branch-transform",
+ "version": "0.3.0",
+ "author": "Andres Suarez",
+ "license": "MIT"
+ },
+ {
+ "name": "unzipit",
+ "version": "2.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "unzipper",
+ "version": "0.12.3",
+ "author": "Evan Oxfeld",
+ "license": "MIT"
+ },
+ {
+ "name": "upath",
+ "version": "2.0.1",
+ "author": "Angelos Pikoulas",
+ "license": "MIT"
+ },
+ {
+ "name": "uri-js",
+ "version": "4.4.1",
+ "author": "Gary Court",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "utf8-byte-length",
+ "version": "1.0.1",
+ "author": "Carl Xiong",
+ "license": "WTFPL"
+ },
+ {
+ "name": "util-deprecate",
+ "version": "1.0.1",
+ "author": "Nathan Rajlich",
+ "license": "MIT"
+ },
+ {
+ "name": "uuid",
+ "version": "14.0.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "vis-data",
+ "version": "7.1.10",
+ "author": "—",
+ "license": "(Apache-2.0 OR MIT)"
+ },
+ {
+ "name": "vis-network",
+ "version": "9.1.13",
+ "author": "—",
+ "license": "(Apache-2.0 OR MIT)"
+ },
+ {
+ "name": "vis-util",
+ "version": "5.0.7",
+ "author": "Alex de Mulder",
+ "license": "(Apache-2.0 OR MIT)"
+ },
+ {
+ "name": "vite",
+ "version": "8.1.5",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "vite-plugin-vuetify",
+ "version": "2.1.3",
+ "author": "Kael Watts-Deuchar",
+ "license": "MIT"
+ },
+ {
+ "name": "vitest",
+ "version": "4.1.10",
+ "author": "Anthony Fu",
+ "license": "MIT"
+ },
+ {
+ "name": "vscode-uri",
+ "version": "3.0.8",
+ "author": "Microsoft",
+ "license": "MIT"
+ },
+ {
+ "name": "vue",
+ "version": "3.5.40",
+ "author": "Evan You",
+ "license": "MIT"
+ },
+ {
+ "name": "vue-component-type-helpers",
+ "version": "3.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "vue-eslint-parser",
+ "version": "10.4.1",
+ "author": "Toru Nagashima",
+ "license": "MIT"
+ },
+ {
+ "name": "vue-i18n",
+ "version": "11.4.7",
+ "author": "kazuya kawaguchi",
+ "license": "MIT"
+ },
+ {
+ "name": "vue-router",
+ "version": "4.6.4",
+ "author": "Eduardo San Martin Morote",
+ "license": "MIT"
+ },
+ {
+ "name": "vue-tsc",
+ "version": "3.3.7",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "vuetify",
+ "version": "3.12.10",
+ "author": "John Leider",
+ "license": "MIT"
+ },
+ {
+ "name": "w3c-xmlserializer",
+ "version": "5.0.0",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "walk-up-path",
+ "version": "4.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "web-worker",
+ "version": "1.5.0",
+ "author": "—",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "webcrypto-core",
+ "version": "1.9.2",
+ "author": "PeculiarVentures",
+ "license": "MIT"
+ },
+ {
+ "name": "webidl-conversions",
+ "version": "8.0.1",
+ "author": "Domenic Denicola",
+ "license": "BSD-2-Clause"
+ },
+ {
+ "name": "whatwg-mimetype",
+ "version": "5.0.0",
+ "author": "Domenic Denicola",
+ "license": "MIT"
+ },
+ {
+ "name": "whatwg-url",
+ "version": "16.0.1",
+ "author": "Sebastian Mayr",
+ "license": "MIT"
+ },
+ {
+ "name": "which",
+ "version": "2.0.1",
+ "author": "GitHub Inc.",
+ "license": "ISC"
+ },
+ {
+ "name": "which-module",
+ "version": "2.0.0",
+ "author": "nexdrew",
+ "license": "ISC"
+ },
+ {
+ "name": "why-is-node-running",
+ "version": "2.3.0",
+ "author": "Mathias Buus",
+ "license": "MIT"
+ },
+ {
+ "name": "word-wrap",
+ "version": "1.2.5",
+ "author": "Jon Schlinkert",
+ "license": "MIT"
+ },
+ {
+ "name": "wrap-ansi",
+ "version": "2.0.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "wrappy",
+ "version": "1.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "xml-name-validator",
+ "version": "5.0.0",
+ "author": "Domenic Denicola",
+ "license": "Apache-2.0"
+ },
+ {
+ "name": "xml-utils",
+ "version": "1.10.2",
+ "author": "Daniel J. Dufour",
+ "license": "CC0-1.0"
+ },
+ {
+ "name": "xmlbuilder",
+ "version": "9.0.7",
+ "author": "Ozgur Ozcitak",
+ "license": "MIT"
+ },
+ {
+ "name": "xmlchars",
+ "version": "2.2.0",
+ "author": "Louis-Dominique Dubeau",
+ "license": "MIT"
+ },
+ {
+ "name": "xtend",
+ "version": "4.0.0",
+ "author": "Raynos",
+ "license": "MIT"
+ },
+ {
+ "name": "y18n",
+ "version": "5.0.5",
+ "author": "Ben Coe",
+ "license": "ISC"
+ },
+ {
+ "name": "yallist",
+ "version": "4.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "ISC"
+ },
+ {
+ "name": "yallist",
+ "version": "5.0.0",
+ "author": "Isaac Z. Schlueter",
+ "license": "BlueOak-1.0.0"
+ },
+ {
+ "name": "yaml",
+ "version": "2.9.0",
+ "author": "Eemeli Aro",
+ "license": "ISC"
+ },
+ {
+ "name": "yargs",
+ "version": "12.0.5",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "yargs-parser",
+ "version": "21.1.1",
+ "author": "Ben Coe",
+ "license": "ISC"
+ },
+ {
+ "name": "yocto-queue",
+ "version": "0.1.0",
+ "author": "Sindre Sorhus",
+ "license": "MIT"
+ },
+ {
+ "name": "zarrita",
+ "version": "0.7.1",
+ "author": "—",
+ "license": "MIT"
+ },
+ {
+ "name": "zod",
+ "version": "4.4.3",
+ "author": "Colin McDonnell",
+ "license": "MIT"
+ },
+ {
+ "name": "zstddec",
+ "version": "0.2.0",
+ "author": "Don McCurdy",
+ "license": "MIT AND BSD-3-Clause"
+ }
]
diff --git a/meshchatx/src/backend/telephone_manager.py b/meshchatx/src/backend/telephone_manager.py
index d028a14e..d7365724 100644
--- a/meshchatx/src/backend/telephone_manager.py
+++ b/meshchatx/src/backend/telephone_manager.py
@@ -81,6 +81,9 @@ class TelephoneManager:
# Manual mute overrides in case LXST internal muting is buggy
self.transmit_muted = False
self.receive_muted = False
+ # Half-duplex PTT state. LXST squelches the packetizer when TX is idle.
+ self.ptt_active = False
+ self.call_stats = {}
self.initiation_status = None
self.initiation_target_hash = None
@@ -90,6 +93,7 @@ class TelephoneManager:
self._status_poll_interval_s = 0.1
self.is_voicemail_session_active = False
self.preferred_profile_id = None
+ self.preferred_mode_id = None
self._caller_allowed = None
self._blocked_identity_hashes = None
# When True, LXST must not open PulseAudio LineSource/LineSink (Docker /
@@ -165,6 +169,120 @@ class TelephoneManager:
self.telephone.switch_profile(self.preferred_profile_id)
return self.preferred_profile_id
+ def resolve_call_mode_id(self, mode_id=None):
+ """Return a valid LXST call mode id (full or half duplex)."""
+ from LXST.Primitives.Telephony import Profiles
+
+ available = set(Profiles.available_modes())
+ mid = mode_id
+ if mid is None and self.config_manager:
+ with contextlib.suppress(Exception):
+ mid = self.config_manager.telephone_call_mode_id.get()
+ try:
+ mid = int(mid) if mid is not None else None
+ except (TypeError, ValueError):
+ mid = None
+ if mid not in available:
+ mid = Profiles.DEFAULT_MODE
+ return mid
+
+ def apply_preferred_mode(self, mode_id=None):
+ """Store preferred duplex mode and apply it on an established call."""
+ self.preferred_mode_id = self.resolve_call_mode_id(mode_id)
+ if (
+ self.telephone
+ and self.telephone.active_call
+ and self.telephone.call_status == 6
+ ):
+ self.switch_mode(self.preferred_mode_id)
+ return self.preferred_mode_id
+
+ def switch_mode(self, mode_id):
+ """Switch live call duplex mode via LXST signalling and local squelch."""
+ from LXST.Primitives.Telephony import Profiles
+
+ resolved = self.resolve_call_mode_id(mode_id)
+ self.preferred_mode_id = resolved
+ if not (
+ self.telephone
+ and self.telephone.active_call
+ and self.telephone.call_status == 6
+ ):
+ return resolved
+ with contextlib.suppress(Exception):
+ self.telephone.switch_mode(resolved)
+ # Keep local view aligned even when LXST is mocked in tests.
+ with contextlib.suppress(Exception):
+ self.telephone.active_call.call_mode = resolved
+ # Half duplex starts listen-only. Full duplex keeps continuous TX open.
+ self.ptt_active = False
+ if resolved == Profiles.MODE_HALF_DUPLEX:
+ with contextlib.suppress(Exception):
+ self.telephone.squelch_transmit(True)
+ else:
+ with contextlib.suppress(Exception):
+ self.telephone.unsquelch_transmit(True)
+ return resolved
+
+ def get_active_mode_id(self):
+ """Return the active call mode, preferred mode, or LXST default."""
+ from LXST.Primitives.Telephony import Profiles
+
+ if self.telephone and self.telephone.active_call:
+ link_mode = getattr(self.telephone.active_call, "call_mode", None)
+ if link_mode in Profiles.available_modes():
+ return link_mode
+ mode = getattr(self.telephone, "active_mode", None)
+ if mode in Profiles.available_modes():
+ return mode
+ if self.preferred_mode_id in Profiles.available_modes():
+ return self.preferred_mode_id
+ return self.resolve_call_mode_id()
+
+ def is_half_duplex(self):
+ from LXST.Primitives.Telephony import Profiles
+
+ return self.get_active_mode_id() == Profiles.MODE_HALF_DUPLEX
+
+ def is_transmit_squelched(self):
+ """True when LXST packetizer is squelched (half-duplex idle / PTT up)."""
+ if not self.telephone or not self.telephone.active_call:
+ return False
+ packetizer = getattr(self.telephone.active_call, "packetizer", None)
+ if packetizer is not None:
+ return bool(getattr(packetizer, "squelched", False))
+ return self.is_half_duplex() and not self.ptt_active
+
+ def set_ptt_active(self, active: bool):
+ """Push-to-talk gate for half-duplex calls (unsquelch while held)."""
+ if not (
+ self.telephone
+ and self.telephone.active_call
+ and self.telephone.call_status == 6
+ ):
+ self.ptt_active = False
+ return False
+ if not self.is_half_duplex():
+ self.ptt_active = False
+ return False
+ want_active = bool(active)
+ try:
+ if want_active:
+ self.telephone.unsquelch_transmit(True)
+ else:
+ self.telephone.squelch_transmit(True)
+ self.ptt_active = want_active
+ return True
+ except Exception as e:
+ RNS.log(f"TelephoneManager: PTT squelch failed: {e}", RNS.LOG_ERROR)
+ return False
+
+ def _reset_call_audio_controls(self):
+ self.transmit_muted = False
+ self.receive_muted = False
+ self.ptt_active = False
+ self.call_stats = {}
+
def init_telephone(self):
if self.telephone is not None:
return
@@ -187,9 +305,10 @@ class TelephoneManager:
# Increase connection timeout for slower networks
self.telephone.set_connect_timeout(30)
- # LXST switch_profile is a no-op without an established call. Remember the
- # preferred profile and pass it into telephone.call() on outbound dial.
+ # LXST switch_profile / switch_mode are no-ops without an established call.
+ # Remember preferred values and pass them into telephone.call() on dial.
self.preferred_profile_id = self.resolve_audio_profile_id()
+ self.preferred_mode_id = self.resolve_call_mode_id()
self._install_link_table_cleanup()
self.refresh_call_policy()
@@ -311,11 +430,13 @@ class TelephoneManager:
# Update start time to when it was actually established for duration calculation
self.call_start_time = time.time()
self.call_was_established = True
+ self.ptt_active = False
# Track per-call stats from the active link (uses RNS Link counters)
link = getattr(self.telephone, "active_call", None)
self.call_stats = {
"link": link,
+ "started_at": self.call_start_time,
}
if self.on_established_callback:
@@ -328,6 +449,7 @@ class TelephoneManager:
# Ensure initiation status is cleared when call ends
self._update_initiation_status(None, None)
+ self._reset_call_audio_controls()
if self.on_ended_callback:
self.on_ended_callback(caller_identity)
@@ -532,15 +654,18 @@ class TelephoneManager:
profile_id = self.resolve_audio_profile_id(self.preferred_profile_id)
self.preferred_profile_id = profile_id
+ mode_id = self.resolve_call_mode_id(self.preferred_mode_id)
+ self.preferred_mode_id = mode_id
# Use a thread for the blocking LXST call, but monitor status for early exit
- # if established elsewhere or timed out/hung up. Pass preferred profile so
- # Codec2/Opus selection actually applies (switch_profile alone is a no-op idle).
+ # if established elsewhere or timed out/hung up. Pass preferred profile and
+ # duplex mode so Codec2/Opus and half-duplex actually apply on dial.
call_task = asyncio.create_task(
asyncio.to_thread(
self.telephone.call,
destination_identity,
profile_id,
+ mode_id,
),
)
diff --git a/meshchatx/src/backend/web_audio_bridge.py b/meshchatx/src/backend/web_audio_bridge.py
index 914c215e..5a8898f8 100644
--- a/meshchatx/src/backend/web_audio_bridge.py
+++ b/meshchatx/src/backend/web_audio_bridge.py
@@ -345,6 +345,20 @@ class WebAudioBridge:
return
if getattr(self.telephone_manager, "is_voicemail_session_active", False):
return
+ # Do not feed PCM while mic is muted or half-duplex PTT is released.
+ if getattr(self.telephone_manager, "transmit_muted", False) is True:
+ return
+ is_squelched = getattr(
+ self.telephone_manager,
+ "is_transmit_squelched",
+ None,
+ )
+ if callable(is_squelched):
+ try:
+ if is_squelched() is True:
+ return
+ except Exception:
+ pass
if not self.tx_source:
# Hostless LineSource stand-in still accepts PCM until swap.
audio_in = getattr(tele, "audio_input", None)
diff --git a/meshchatx/src/frontend/components/call/CallOverlay.vue b/meshchatx/src/frontend/components/call/CallOverlay.vue
index 44653fa2..6b791ccf 100644
--- a/meshchatx/src/frontend/components/call/CallOverlay.vue
+++ b/meshchatx/src/frontend/components/call/CallOverlay.vue
@@ -176,10 +176,30 @@
<MaterialDesignIcon icon-name="arrow-down" class="size-3" />
<span>{{ formatBytes(activeCall.rx_bytes || 0) }}</span>
</div>
+ <div class="col-span-2 text-center font-semibold uppercase tracking-wider">
+ {{ localHalfDuplex ? $t("call.half_duplex") : $t("call.full_duplex") }}
+ <span v-if="localHalfDuplex">
+ · {{ localPttActive ? $t("call.ptt_transmitting") : $t("call.ptt_listening") }}
+ </span>
+ </div>
</div>
<!-- Controls -->
<div v-if="!isEnded && !wasDeclined" class="flex flex-wrap justify-center gap-2 px-2">
+ <!-- Duplex toggle -->
+ <button
+ v-if="activeCall && activeCall.status === 6"
+ type="button"
+ :title="localHalfDuplex ? $t('call.switch_to_full_duplex') : $t('call.switch_to_half_duplex')"
+ class="p-2.5 rounded-full transition-all duration-200 bg-gray-100 dark:bg-zinc-800 text-gray-600 dark:text-zinc-300 hover:bg-gray-200 dark:hover:bg-zinc-700"
+ @click="toggleDuplexMode"
+ >
+ <MaterialDesignIcon
+ :icon-name="localHalfDuplex ? 'access-point-network' : 'swap-horizontal'"
+ class="size-5"
+ />
+ </button>
+
<!-- Mute Mic -->
<button
type="button"
@@ -246,6 +266,20 @@
<MaterialDesignIcon icon-name="phone" class="size-5" />
</button>
</div>
+
+ <button
+ v-if="activeCall && activeCall.status === 6 && localHalfDuplex && !isEnded"
+ type="button"
+ class="mt-3 w-full flex items-center justify-center gap-2 rounded-xl py-3 text-sm font-bold text-white select-none touch-none"
+ :class="localPttActive ? 'bg-amber-500' : 'bg-blue-600'"
+ @pointerdown.prevent="setPttActive(true)"
+ @pointerup.prevent="setPttActive(false)"
+ @pointerleave="setPttActive(false)"
+ @pointercancel="setPttActive(false)"
+ >
+ <MaterialDesignIcon icon-name="microphone" class="size-5" />
+ <span>{{ localPttActive ? $t("call.ptt_transmitting") : $t("call.ptt_hold_to_talk") }}</span>
+ </button>
</div>
<!-- Ended State Voicemail Playback -->
@@ -362,6 +396,8 @@ export default {
audioPlayer: null,
localMicMuted: false,
localSpeakerMuted: false,
+ localPttActive: false,
+ localHalfDuplex: false,
};
},
computed: {
@@ -387,13 +423,24 @@ export default {
},
},
watch: {
- activeCall(newCall, oldCall) {
- if (newCall) {
- if (!oldCall || newCall.hash !== oldCall.hash) {
- this.localMicMuted = newCall.is_mic_muted;
- this.localSpeakerMuted = newCall.is_speaker_muted;
+ activeCall: {
+ immediate: true,
+ handler(newCall, oldCall) {
+ if (newCall) {
+ if (!oldCall || newCall.hash !== oldCall.hash) {
+ this.localMicMuted = Boolean(newCall.is_mic_muted);
+ this.localSpeakerMuted = Boolean(newCall.is_speaker_muted);
+ this.localPttActive = Boolean(newCall.is_ptt_active);
+ this.localHalfDuplex = Boolean(newCall.is_half_duplex);
+ } else {
+ this.localPttActive = Boolean(newCall.is_ptt_active);
+ this.localHalfDuplex = Boolean(newCall.is_half_duplex);
+ }
+ } else {
+ this.localPttActive = false;
+ this.localHalfDuplex = false;
}
- }
+ },
},
},
mounted() {
@@ -493,6 +540,33 @@ export default {
ToastUtils.error(this.$t("call.failed_to_toggle_speaker"));
}
},
+ async toggleDuplexMode() {
+ if (!this.activeCall || this.activeCall.status !== 6) return;
+ const nextMode = this.localHalfDuplex ? 1 : 2;
+ try {
+ const response = await window.api.post(`/api/v1/telephone/switch-call-mode/${nextMode}`);
+ this.localPttActive = Boolean(response.data?.is_ptt_active);
+ this.localHalfDuplex = Boolean(response.data?.is_half_duplex);
+ } catch {
+ ToastUtils.error(this.$t("call.failed_to_switch_call_mode"));
+ }
+ },
+ async setPttActive(active) {
+ if (!this.activeCall || this.activeCall.status !== 6 || !this.localHalfDuplex) {
+ if (active) return;
+ }
+ const wantActive = Boolean(active);
+ if (this.localPttActive === wantActive) return;
+ this.localPttActive = wantActive;
+ try {
+ await window.api.post("/api/v1/telephone/ptt", { active: wantActive });
+ } catch {
+ this.localPttActive = !wantActive;
+ if (wantActive) {
+ ToastUtils.error(this.$t("call.failed_to_set_ptt"));
+ }
+ }
+ },
async playLatestVoicemail() {
if (this.isPlayingVoicemail) {
if (this.audioPlayer) {
diff --git a/meshchatx/src/frontend/components/call/CallPage.vue b/meshchatx/src/frontend/components/call/CallPage.vue
index e76ed209..79f4bf69 100644
--- a/meshchatx/src/frontend/components/call/CallPage.vue
+++ b/meshchatx/src/frontend/components/call/CallPage.vue
@@ -368,7 +368,7 @@
class="rounded-xl bg-gray-50 dark:bg-zinc-800/70 border border-gray-100 dark:border-zinc-700/70 px-2 py-1.5 text-left"
>
<div class="text-[10px] text-gray-500 dark:text-zinc-400">
- TX Pkts
+ {{ $t("call.tx_packets") }}
</div>
<div class="font-semibold text-gray-800 dark:text-zinc-100">
{{ formatNumber(activeCall.tx_packets) }}
@@ -378,7 +378,7 @@
class="rounded-xl bg-gray-50 dark:bg-zinc-800/70 border border-gray-100 dark:border-zinc-700/70 px-2 py-1.5 text-left"
>
<div class="text-[10px] text-gray-500 dark:text-zinc-400">
- RX Pkts
+ {{ $t("call.rx_packets") }}
</div>
<div class="font-semibold text-gray-800 dark:text-zinc-100">
{{ formatNumber(activeCall.rx_packets) }}
@@ -388,7 +388,7 @@
class="rounded-xl bg-gray-50 dark:bg-zinc-800/70 border border-gray-100 dark:border-zinc-700/70 px-2 py-1.5 text-left"
>
<div class="text-[10px] text-gray-500 dark:text-zinc-400">
- TX Data Out
+ {{ $t("call.tx_data") }}
</div>
<div class="font-semibold text-gray-800 dark:text-zinc-100">
{{ formatBytes(activeCall.tx_bytes) }}
@@ -398,12 +398,50 @@
class="rounded-xl bg-gray-50 dark:bg-zinc-800/70 border border-gray-100 dark:border-zinc-700/70 px-2 py-1.5 text-left"
>
<div class="text-[10px] text-gray-500 dark:text-zinc-400">
- RX Data In
+ {{ $t("call.rx_data") }}
</div>
<div class="font-semibold text-gray-800 dark:text-zinc-100">
{{ formatBytes(activeCall.rx_bytes) }}
</div>
</div>
+ <div
+ class="rounded-xl bg-gray-50 dark:bg-zinc-800/70 border border-gray-100 dark:border-zinc-700/70 px-2 py-1.5 text-left"
+ >
+ <div class="text-[10px] text-gray-500 dark:text-zinc-400">
+ {{ $t("call.tx_rate") }}
+ </div>
+ <div class="font-semibold text-gray-800 dark:text-zinc-100">
+ {{ formatBitrate(activeCall.tx_bps) }}
+ </div>
+ </div>
+ <div
+ class="rounded-xl bg-gray-50 dark:bg-zinc-800/70 border border-gray-100 dark:border-zinc-700/70 px-2 py-1.5 text-left"
+ >
+ <div class="text-[10px] text-gray-500 dark:text-zinc-400">
+ {{ $t("call.rx_rate") }}
+ </div>
+ <div class="font-semibold text-gray-800 dark:text-zinc-100">
+ {{ formatBitrate(activeCall.rx_bps) }}
+ </div>
+ </div>
+ </div>
+ <div
+ v-if="activeCall && activeCall.status === 6"
+ class="mt-2 text-[10px] font-semibold uppercase tracking-wider text-gray-500 dark:text-zinc-400"
+ >
+ {{
+ activeCall.is_half_duplex
+ ? $t("call.half_duplex")
+ : $t("call.full_duplex")
+ }}
+ <span v-if="activeCall.is_half_duplex">
+ ·
+ {{
+ localPttActive
+ ? $t("call.ptt_transmitting")
+ : $t("call.ptt_listening")
+ }}
+ </span>
</div>
</div>
</template>
@@ -457,10 +495,25 @@
</option>
</select>
+ <select
+ v-model="selectedCallModeId"
+ class="input-field rounded-xl! py-2! shadow-xs"
+ @change="switchCallMode(selectedCallModeId)"
+ >
+ <option
+ v-for="callMode in callModes"
+ :key="callMode.id"
+ :value="callMode.id"
+ >
+ {{ callMode.name }}
+ </option>
+ </select>
+
<div class="flex justify-center gap-4">
<!-- mute/unmute mic -->
<button
type="button"
+ :title="isMicMuted ? $t('call.unmute_mic') : $t('call.mute_mic')"
:class="[
isMicMuted
? 'bg-red-500 text-white shadow-red-500/20'
@@ -478,6 +531,11 @@
<!-- mute/unmute speaker -->
<button
type="button"
+ :title="
+ isSpeakerMuted
+ ? $t('call.unmute_speaker')
+ : $t('call.mute_speaker')
+ "
:class="[
isSpeakerMuted
? 'bg-red-500 text-white shadow-red-500/20'
@@ -492,6 +550,38 @@
/>
</button>
</div>
+
+ <button
+ v-if="isHalfDuplexCall"
+ type="button"
+ class="w-full flex items-center justify-center gap-2 rounded-2xl py-5 text-base font-bold text-white shadow-xl transition-all duration-150 select-none touch-none"
+ :class="
+ localPttActive
+ ? 'bg-amber-500 shadow-amber-500/30 scale-[1.02]'
+ : 'bg-blue-600 shadow-blue-600/20 hover:bg-blue-500'
+ "
+ :title="$t('call.ptt_hold_hint')"
+ @pointerdown.prevent="setPttActive(true)"
+ @pointerup.prevent="setPttActive(false)"
+ @pointerleave="setPttActive(false)"
+ @pointercancel="setPttActive(false)"
+ >
+ <MaterialDesignIcon
+ :icon-name="localPttActive ? 'microphone' : 'access-point-network'"
+ class="size-7"
+ />
+ <span>{{
+ localPttActive
+ ? $t("call.ptt_transmitting")
+ : $t("call.ptt_hold_to_talk")
+ }}</span>
+ </button>
+ <div
+ v-if="isHalfDuplexCall"
+ class="text-center text-[11px] text-gray-500 dark:text-zinc-400"
+ >
+ {{ $t("call.ptt_spacebar_hint") }}
+ </div>
</div>
</div>
@@ -724,6 +814,31 @@
</option>
</select>
</div>
+ <div class="flex flex-col gap-1">
+ <div
+ class="text-[10px] font-bold text-gray-500 uppercase tracking-widest px-1"
+ >
+ {{ $t("call.default_duplex") }}
+ </div>
+ <select
+ v-if="config"
+ v-model="config.telephone_call_mode_id"
+ class="input-field min-w-0 rounded-lg! border-gray-200! py-1! px-2! text-xs! dark:border-zinc-800! lg:min-w-[120px]"
+ @change="
+ updateConfig({
+ telephone_call_mode_id: config.telephone_call_mode_id,
+ })
+ "
+ >
+ <option
+ v-for="callMode in callModes"
+ :key="callMode.id"
+ :value="callMode.id"
+ >
+ {{ callMode.name }}
+ </option>
+ </select>
+ </div>
<!-- Web Audio Device Selection -->
<div v-if="webAudioBridgeEnabled" class="flex flex-col gap-2 mt-2">
@@ -2378,6 +2493,10 @@ export default {
webAudioBridgeRequired: false,
audioProfiles: [],
selectedAudioProfileId: null,
+ callModes: [],
+ selectedCallModeId: 1,
+ localPttActive: false,
+ pttKeyHeld: false,
destinationHash: "",
callHistory: [],
callHistorySearch: "",
@@ -2486,6 +2605,9 @@ export default {
isSpeakerMuted() {
return this.localSpeakerMuted;
},
+ isHalfDuplexCall() {
+ return Boolean(this.activeCall && this.activeCall.status === 6 && this.activeCall.is_half_duplex);
+ },
elapsedTime() {
if (!this.activeCall?.call_start_time) {
return null;
@@ -2565,6 +2687,7 @@ export default {
mounted() {
this.getConfig();
this.getAudioProfiles();
+ this.getCallModes();
this.getStatus();
this.getHistory();
this.getVoicemails();
@@ -2601,6 +2724,10 @@ export default {
this.$forceUpdate();
}, 1000);
+ window.addEventListener("keydown", this.onPttKeyDown);
+ window.addEventListener("keyup", this.onPttKeyUp);
+ window.addEventListener("blur", this.onPttWindowBlur);
+
// autofill destination hash and tab from query string
const destinationHash = this.$route.query.destination_hash;
if (destinationHash) {
@@ -2620,6 +2747,12 @@ export default {
if (this.historyInterval) clearInterval(this.historyInterval);
if (this.elapsedTimeInterval) clearInterval(this.elapsedTimeInterval);
if (this.endedTimeout) clearTimeout(this.endedTimeout);
+ window.removeEventListener("keydown", this.onPttKeyDown);
+ window.removeEventListener("keyup", this.onPttKeyUp);
+ window.removeEventListener("blur", this.onPttWindowBlur);
+ if (this.localPttActive) {
+ this.setPttActive(false);
+ }
this.stopAudioVisualizer();
if (this.audioPlayer) {
this.audioPlayer.pause();
@@ -2637,6 +2770,12 @@ export default {
formatNumber(value) {
return Utils.formatNumber(value || 0);
},
+ formatBitrate(bps) {
+ const rate = Number(bps) || 0;
+ if (rate < 1000) return `${Math.round(rate)} bps`;
+ if (rate < 1000000) return `${(rate / 1000).toFixed(1)} kbps`;
+ return `${(rate / 1000000).toFixed(2)} Mbps`;
+ },
formatDateTime(timestamp) {
return Utils.convertUnixMillisToLocalDateTimeString(timestamp);
},
@@ -3543,18 +3682,47 @@ export default {
console.log(e);
}
},
+ async getCallModes() {
+ try {
+ const response = await window.api.get("/api/v1/telephone/call-modes");
+ const modes = Array.isArray(response.data.call_modes) ? response.data.call_modes : [];
+ this.callModes = modes;
+ if (response.data.default_call_mode_id != null) {
+ this.selectedCallModeId = response.data.default_call_mode_id;
+ }
+ } catch (e) {
+ console.log(e);
+ }
+ },
async getStatus() {
try {
const response = await window.api.get("/api/v1/telephone/status");
const oldCall = this.activeCall;
const newCall = response.data.active_call;
- // Sync local mute state from backend
+ // Sync local mute / PTT / mode state from backend
if (newCall) {
if (!oldCall || newCall.hash !== oldCall.hash) {
- this.localMicMuted = newCall.is_mic_muted;
- this.localSpeakerMuted = newCall.is_speaker_muted;
+ this.localMicMuted = Boolean(newCall.is_mic_muted);
+ this.localSpeakerMuted = Boolean(newCall.is_speaker_muted);
+ this.localPttActive = Boolean(newCall.is_ptt_active);
+ } else if (!this.isMicMuting) {
+ this.localMicMuted = Boolean(
+ newCall.is_mic_muted ?? response.data.is_mic_muted ?? this.localMicMuted
+ );
+ this.localSpeakerMuted = Boolean(
+ newCall.is_speaker_muted ?? response.data.is_speaker_muted ?? this.localSpeakerMuted
+ );
+ if (!this.pttKeyHeld) {
+ this.localPttActive = Boolean(newCall.is_ptt_active);
+ }
}
+ if (newCall.call_mode_id != null) {
+ this.selectedCallModeId = newCall.call_mode_id;
+ }
+ } else {
+ this.localPttActive = false;
+ this.pttKeyHeld = false;
}
this.activeCall = newCall;
@@ -4403,6 +4571,78 @@ export default {
ToastUtils.error(this.$t("call.failed_to_switch_audio_profile"));
}
},
+ async switchCallMode(modeId) {
+ try {
+ const response = await window.api.post(`/api/v1/telephone/switch-call-mode/${modeId}`);
+ const resolved = response.data?.mode_id;
+ if (resolved != null) {
+ this.selectedCallModeId = resolved;
+ }
+ this.localPttActive = Boolean(response.data?.is_ptt_active);
+ if (this.activeCall) {
+ this.activeCall.call_mode_id = resolved;
+ this.activeCall.is_half_duplex = Boolean(response.data?.is_half_duplex);
+ this.activeCall.is_ptt_active = this.localPttActive;
+ }
+ if (this.config) {
+ this.config.telephone_call_mode_id = resolved;
+ }
+ } catch {
+ ToastUtils.error(this.$t("call.failed_to_switch_call_mode"));
+ }
+ },
+ isEditableEventTarget(target) {
+ if (!target || !(target instanceof Element)) return false;
+ const tag = (target.tagName || "").toLowerCase();
+ if (tag === "input" || tag === "textarea" || tag === "select") return true;
+ return Boolean(target.isContentEditable);
+ },
+ onPttKeyDown(event) {
+ if (event.code !== "Space" && event.key !== " ") return;
+ if (event.repeat) return;
+ if (this.isEditableEventTarget(event.target)) return;
+ if (!this.isHalfDuplexCall) return;
+ event.preventDefault();
+ this.pttKeyHeld = true;
+ this.setPttActive(true);
+ },
+ onPttKeyUp(event) {
+ if (event.code !== "Space" && event.key !== " ") return;
+ if (!this.pttKeyHeld && !this.localPttActive) return;
+ event.preventDefault();
+ this.pttKeyHeld = false;
+ this.setPttActive(false);
+ },
+ onPttWindowBlur() {
+ this.pttKeyHeld = false;
+ if (this.localPttActive) {
+ this.setPttActive(false);
+ }
+ },
+ async setPttActive(active) {
+ if (!this.isHalfDuplexCall && active) {
+ return;
+ }
+ const wantActive = Boolean(active);
+ if (this.localPttActive === wantActive) {
+ return;
+ }
+ this.localPttActive = wantActive;
+ if (this.activeCall) {
+ this.activeCall.is_ptt_active = wantActive;
+ }
+ try {
+ await window.api.post("/api/v1/telephone/ptt", { active: wantActive });
+ } catch {
+ this.localPttActive = !wantActive;
+ if (this.activeCall) {
+ this.activeCall.is_ptt_active = !wantActive;
+ }
+ if (wantActive) {
+ ToastUtils.error(this.$t("call.failed_to_set_ptt"));
+ }
+ }
+ },
async toggleMicrophone() {
try {
const isCurrentlyMuted = this.localMicMuted;
diff --git a/meshchatx/src/frontend/locales/en.json b/meshchatx/src/frontend/locales/en.json
index b015e18a..ff621b06 100644
--- a/meshchatx/src/frontend/locales/en.json
+++ b/meshchatx/src/frontend/locales/en.json
@@ -3547,6 +3547,24 @@
"minimize": "Minimize",
"active": "Active",
"default_quality": "Default Quality",
+ "default_duplex": "Default Duplex",
+ "full_duplex": "Full Duplex",
+ "half_duplex": "Half Duplex",
+ "switch_to_full_duplex": "Switch to full duplex",
+ "switch_to_half_duplex": "Switch to half duplex",
+ "ptt_hold_to_talk": "Hold to Talk",
+ "ptt_transmitting": "Transmitting",
+ "ptt_listening": "Listening",
+ "ptt_hold_hint": "Hold to unsquelch transmit on this half-duplex call",
+ "ptt_spacebar_hint": "Hold Space to talk",
+ "tx_packets": "TX Packets",
+ "rx_packets": "RX Packets",
+ "tx_data": "TX Data",
+ "rx_data": "RX Data",
+ "tx_rate": "TX Rate",
+ "rx_rate": "RX Rate",
+ "failed_to_switch_call_mode": "Failed to switch duplex mode",
+ "failed_to_set_ptt": "Failed to set push-to-talk",
"active_call": "Active Call",
"status": "Status",
"failed_to_answer_call": "Failed to answer call",
diff --git a/tests/backend/http_api_response_registry.py b/tests/backend/http_api_response_registry.py
index 2b1b4922..2af5a4e2 100644
--- a/tests/backend/http_api_response_registry.py
+++ b/tests/backend/http_api_response_registry.py
@@ -117,6 +117,7 @@ from tests.backend.http_api_response_schemas import (
TELEMETRY_TRACKING_SCHEMA,
TELEMETRY_TRUSTED_PEERS_SCHEMA,
TELEPHONE_AUDIO_PROFILES_SCHEMA,
+ TELEPHONE_CALL_MODES_SCHEMA,
TELEPHONE_CODEC2_STATUS_SCHEMA,
TELEPHONE_HISTORY_SCHEMA,
TELEPHONE_RECORDINGS_SCHEMA,
@@ -563,6 +564,11 @@ HTTP_JSON_GET_CONTRACTS: tuple[HttpJsonContract, ...] = (
"/api/v1/telephone/audio-profiles",
TELEPHONE_AUDIO_PROFILES_SCHEMA,
),
+ HttpJsonContract(
+ "GET",
+ "/api/v1/telephone/call-modes",
+ TELEPHONE_CALL_MODES_SCHEMA,
+ ),
HttpJsonContract(
"GET",
"/api/v1/telephone/codec2/status",
diff --git a/tests/backend/http_api_response_schemas.py b/tests/backend/http_api_response_schemas.py
index 2d3fec60..c31fb87a 100644
--- a/tests/backend/http_api_response_schemas.py
+++ b/tests/backend/http_api_response_schemas.py
@@ -865,6 +865,16 @@ TELEPHONE_AUDIO_PROFILES_SCHEMA: dict = {
"additionalProperties": True,
}
+TELEPHONE_CALL_MODES_SCHEMA: dict = {
+ "type": "object",
+ "required": ["call_modes"],
+ "properties": {
+ "call_modes": _ARRAY,
+ "default_call_mode_id": _INTEGER,
+ },
+ "additionalProperties": True,
+}
+
TELEPHONE_CODEC2_STATUS_SCHEMA: dict = {
"type": "object",
"required": ["codec2_available"],
diff --git a/tests/backend/test_call_codec2_regressions.py b/tests/backend/test_call_codec2_regressions.py
index 3d946ca4..a621b7ec 100644
--- a/tests/backend/test_call_codec2_regressions.py
+++ b/tests/backend/test_call_codec2_regressions.py
@@ -197,8 +197,9 @@ class TestAudioProfilePassthroughRegression:
tm.preferred_profile_id = Profiles.BANDWIDTH_LOW
seen = {}
- def capture_call(identity, profile=None):
+ def capture_call(identity, profile=None, mode=None):
seen["profile"] = profile
+ seen["mode"] = mode
tm.telephone.call_status = 0
tm.telephone.call.side_effect = capture_call
@@ -222,6 +223,7 @@ class TestAudioProfilePassthroughRegression:
await tm.initiate(destination_hash, timeout_seconds=1)
assert seen["profile"] == Profiles.BANDWIDTH_LOW
+ assert seen["mode"] == Profiles.MODE_FULL_DUPLEX
def test_init_does_not_rely_on_idle_switch_profile(self, tmp_path):
cfg = MagicMock()
diff --git a/tests/backend/test_telephone_audio_profiles.py b/tests/backend/test_telephone_audio_profiles.py
index e858fd04..2c180e9c 100644
--- a/tests/backend/test_telephone_audio_profiles.py
+++ b/tests/backend/test_telephone_audio_profiles.py
@@ -68,9 +68,10 @@ async def test_initiate_passes_preferred_profile_to_lxst_call(tm):
tm.preferred_profile_id = Profiles.BANDWIDTH_LOW
seen = {}
- def capture_call(identity, profile=None):
+ def capture_call(identity, profile=None, mode=None):
seen["identity"] = identity
seen["profile"] = profile
+ seen["mode"] = mode
tm.telephone.call_status = 0
tm.telephone.call.side_effect = capture_call
@@ -93,6 +94,7 @@ async def test_initiate_passes_preferred_profile_to_lxst_call(tm):
await tm.initiate(destination_hash, timeout_seconds=1)
assert seen["profile"] == Profiles.BANDWIDTH_LOW
+ assert seen["mode"] == Profiles.MODE_FULL_DUPLEX
def test_init_telephone_stores_preferred_profile_not_idle_switch(tmp_path):
diff --git a/tests/backend/test_telephone_csrf_methods.py b/tests/backend/test_telephone_csrf_methods.py
index fa5cd421..2c5423fa 100644
--- a/tests/backend/test_telephone_csrf_methods.py
+++ b/tests/backend/test_telephone_csrf_methods.py
@@ -19,6 +19,7 @@ def test_telephone_call_mutators_are_post_not_get(mock_app):
"/api/v1/telephone/unmute-transmit",
"/api/v1/telephone/mute-receive",
"/api/v1/telephone/unmute-receive",
+ "/api/v1/telephone/ptt",
]
for path in mutators:
assert _handler(mock_app, "POST", path) is not None, path
@@ -38,3 +39,13 @@ def test_telephone_call_mutators_are_post_not_get(mock_app):
_handler(mock_app, "GET", "/api/v1/telephone/switch-audio-profile/{profile_id}")
is None
)
+ assert (
+ _handler(mock_app, "POST", "/api/v1/telephone/switch-call-mode/{mode_id}")
+ is not None
+ )
+ assert (
+ _handler(mock_app, "GET", "/api/v1/telephone/switch-call-mode/{mode_id}")
+ is None
+ )
+ assert _handler(mock_app, "GET", "/api/v1/telephone/call-modes") is not None
+ assert _handler(mock_app, "POST", "/api/v1/telephone/call-modes") is None
diff --git a/tests/backend/test_telephone_duplex_ptt.py b/tests/backend/test_telephone_duplex_ptt.py
new file mode 100644
index 00000000..cc251592
--- /dev/null
+++ b/tests/backend/test_telephone_duplex_ptt.py
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: 0BSD
+
+"""Half-duplex mode and PTT squelch controls for LXST telephony."""
+
+from types import SimpleNamespace
+from unittest.mock import MagicMock
+
+from LXST.Primitives.Telephony import Profiles
+
+from meshchatx.src.backend.telephone_manager import TelephoneManager
+
+
+def _manager_with_call(mode=Profiles.MODE_HALF_DUPLEX):
+ tm = TelephoneManager(identity=MagicMock())
+ packetizer = SimpleNamespace(squelched=mode == Profiles.MODE_HALF_DUPLEX)
+ active_call = SimpleNamespace(call_mode=mode, packetizer=packetizer)
+ telephone = MagicMock()
+ telephone.active_call = active_call
+ telephone.call_status = 6
+ telephone.active_mode = mode
+ tm.telephone = telephone
+ tm.preferred_mode_id = mode
+ return tm, telephone, packetizer
+
+
+def test_resolve_call_mode_defaults_to_full_duplex():
+ tm = TelephoneManager(identity=MagicMock())
+ assert tm.resolve_call_mode_id(None) == Profiles.MODE_FULL_DUPLEX
+ assert tm.resolve_call_mode_id(999) == Profiles.MODE_FULL_DUPLEX
+ assert (
+ tm.resolve_call_mode_id(Profiles.MODE_HALF_DUPLEX) == Profiles.MODE_HALF_DUPLEX
+ )
+
+
+def test_switch_mode_half_duplex_squelches_and_clears_ptt():
+ tm, telephone, _packetizer = _manager_with_call(Profiles.MODE_FULL_DUPLEX)
+ tm.ptt_active = True
+
+ resolved = tm.switch_mode(Profiles.MODE_HALF_DUPLEX)
+
+ assert resolved == Profiles.MODE_HALF_DUPLEX
+ telephone.switch_mode.assert_called_once_with(Profiles.MODE_HALF_DUPLEX)
+ telephone.squelch_transmit.assert_called_once_with(True)
+ assert tm.ptt_active is False
+ assert tm.is_half_duplex() is True
+
+
+def test_set_ptt_active_unsquelches_only_in_half_duplex():
+ tm, telephone, packetizer = _manager_with_call(Profiles.MODE_HALF_DUPLEX)
+
+ assert tm.set_ptt_active(True) is True
+ telephone.unsquelch_transmit.assert_called_once_with(True)
+ assert tm.ptt_active is True
+
+ packetizer.squelched = False
+ assert tm.is_transmit_squelched() is False
+
+ assert tm.set_ptt_active(False) is True
+ telephone.squelch_transmit.assert_called_once_with(True)
+ assert tm.ptt_active is False
+
+
+def test_set_ptt_active_rejected_in_full_duplex():
+ tm, telephone, _packetizer = _manager_with_call(Profiles.MODE_FULL_DUPLEX)
+
+ assert tm.set_ptt_active(True) is False
+ telephone.unsquelch_transmit.assert_not_called()
+ assert tm.ptt_active is False
+
+
+def test_call_end_resets_mute_and_ptt_state():
+ tm, _telephone, _packetizer = _manager_with_call(Profiles.MODE_HALF_DUPLEX)
+ tm.transmit_muted = True
+ tm.receive_muted = True
+ tm.ptt_active = True
+ tm.call_stats = {"link": object()}
+
+ tm.on_telephone_call_ended(MagicMock())
+
+ assert tm.transmit_muted is False
+ assert tm.receive_muted is False
+ assert tm.ptt_active is False
+ assert tm.call_stats == {}
diff --git a/tests/frontend/CallPage.test.js b/tests/frontend/CallPage.test.js
index a5923014..d7505215 100644
--- a/tests/frontend/CallPage.test.js
+++ b/tests/frontend/CallPage.test.js
@@ -59,6 +59,16 @@ describe("CallPage.vue", () => {
}
if (url.includes("/api/v1/telephone/audio-profiles"))
return Promise.resolve({ data: { audio_profiles: [], default_audio_profile_id: null } });
+ if (url.includes("/api/v1/telephone/call-modes"))
+ return Promise.resolve({
+ data: {
+ default_call_mode_id: 1,
+ call_modes: [
+ { id: 1, name: "Full Duplex", abbrev: "FDX", is_half_duplex: false },
+ { id: 2, name: "Half Duplex", abbrev: "HDX", is_half_duplex: true },
+ ],
+ },
+ });
if (url.includes("/api/v1/telephone/contacts/export")) {
return Promise.resolve({ data: { contacts: [] } });
}
@@ -130,6 +140,30 @@ describe("CallPage.vue", () => {
expect(axiosMock.post).toHaveBeenCalledWith(expect.stringContaining("/api/v1/telephone/mute-transmit"));
});
+ it("switches duplex mode and drives PTT squelch", async () => {
+ const wrapper = mountCallPage();
+ await flushPromises();
+
+ wrapper.vm.activeCall = {
+ status: 6,
+ is_half_duplex: false,
+ call_mode_id: 1,
+ is_ptt_active: false,
+ };
+ axiosMock.post.mockResolvedValueOnce({
+ data: { mode_id: 2, is_half_duplex: true, is_ptt_active: false },
+ });
+
+ await wrapper.vm.switchCallMode(2);
+ expect(axiosMock.post).toHaveBeenCalledWith(expect.stringContaining("/api/v1/telephone/switch-call-mode/2"));
+ expect(wrapper.vm.activeCall.is_half_duplex).toBe(true);
+
+ axiosMock.post.mockResolvedValueOnce({ data: { is_ptt_active: true } });
+ await wrapper.vm.setPttActive(true);
+ expect(axiosMock.post).toHaveBeenCalledWith("/api/v1/telephone/ptt", { active: true });
+ expect(wrapper.vm.localPttActive).toBe(true);
+ });
+
it("renders tabs correctly", async () => {
const wrapper = mountCallPage();
await wrapper.vm.$nextTick();
@@ -185,14 +219,15 @@ describe("CallPage.vue", () => {
expect(wrapper.text()).toContain("3 hops");
expect(wrapper.text()).toContain("Default Interface");
- expect(wrapper.text()).toContain("TX Pkts");
+ expect(wrapper.text()).toContain("call.tx_packets");
expect(wrapper.text()).toContain("303");
- expect(wrapper.text()).toContain("RX Pkts");
+ expect(wrapper.text()).toContain("call.rx_packets");
expect(wrapper.text()).toContain("289");
- expect(wrapper.text()).toContain("TX Data Out");
+ expect(wrapper.text()).toContain("call.tx_data");
expect(wrapper.text()).toContain("35 KB");
- expect(wrapper.text()).toContain("RX Data In");
+ expect(wrapper.text()).toContain("call.rx_data");
expect(wrapper.text()).toContain("82 KB");
+ expect(wrapper.text()).toContain("call.full_duplex");
});
it("attempts to place a call when 'Call' button is clicked", async () => {
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────